日期 | 天气 | 温度 | 省 | 市 | 县区 | 城市id |
11日(今天) | 小雨 | -2℃ | 北京 | 北京 | 北京 | 101010100 |
12日(明天) | 晴 | 6℃\-4℃ | 北京 | 北京 | 北京 | 101010100 |
13日(后天) | 晴 | 9℃\-3℃ | 北京 | 北京 | 北京 | 101010100 |
14日(周五) | 多云 | 9℃\-2℃ | 北京 | 北京 | 北京 | 101010100 |
15日(周六) | 多云转晴 | 12℃\-3℃ | 北京 | 北京 | 北京 | 101010100 |
16日(周日) | 晴 | 7℃\-3℃ | 北京 | 北京 | 北京 | 101010100 |
17日(周一) | 晴 | 8℃\-3℃ | 北京 | 北京 | 北京 | 101010100 |
11日(今天) | 小雨 | 8℃ | 上海 | 上海 | 上海 | 101020100 |
12日(明天) | 小雨转阴 | 12℃\3℃ | 上海 | 上海 | 上海 | 101020100 |
13日(后天) | 阴 | 9℃\3℃ | 上海 | 上海 | 上海 | 101020100 |
14日(周五) | 小雨 | 12℃\5℃ | 上海 | 上海 | 上海 | 101020100 |
15日(周六) | 小雨转多云 | 10℃\5℃ | 上海 | 上海 | 上海 | 101020100 |
16日(周日) | 晴 | 13℃\4℃ | 上海 | 上海 | 上海 | 101020100 |
17日(周一) | 晴转多云 | 10℃\4℃ | 上海 | 上海 | 上海 | 101020100 |
11日(今天) | 阴 | 0℃ | 天津 | 天津 | 天津 | 101030100 |
12日(明天) | 晴 | 5℃\-2℃ | 天津 | 天津 | 天津 | 101030100 |
13日(后天) | 晴 | 9℃\-1℃ | 天津 | 天津 | 天津 | 101030100 |
14日(周五) | 晴 | 10℃\0℃ | 天津 | 天津 | 天津 | 101030100 |
15日(周六) | 多云 | 11℃\-1℃ | 天津 | 天津 | 天津 | 101030100 |
16日(周日) | 晴 | 6℃\-2℃ | 天津 | 天津 | 天津 | 101030100 |
17日(周一) | 晴 | 6℃\-3℃ | 天津 | 天津 | 天津 | 101030100 |
11日(今天) | 小雨 | 9℃ | 重庆 | 重庆 | 重庆 | 101040100 |
12日(明天) | 小雨 | 9℃\7℃ | 重庆 | 重庆 | 重庆 | 101040100 |
13日(后天) | 小雨 | 9℃\7℃ | 重庆 | 重庆 | 重庆 | 101040100 |
14日(周五) | 阴转多云 | 10℃\6℃ | 重庆 | 重庆 | 重庆 | 101040100 |
15日(周六) | 多云 | 15℃\6℃ | 重庆 | 重庆 | 重庆 | 101040100 |
16日(周日) | 多云转小雨 | 16℃\8℃ | 重庆 | 重庆 | 重庆 | 101040100 |
17日(周一) | 小雨 | 14℃\9℃ | 重庆 | 重庆 | 重庆 | 101040100 |
11日(今天) | 小到中雪 | -10℃ | 辽宁 | 沈阳 | 沈阳 | 101070101 |
12日(明天) | 晴 | 1℃\-13℃ | 辽宁 | 沈阳 | 沈阳 | 101070101 |
13日(后天) | 晴 | 5℃\-10℃ | 辽宁 | 沈阳 | 沈阳 | 101070101 |
14日(周五) | 晴 | 7℃\-8℃ | 辽宁 | 沈阳 | 沈阳 | 101070101 |
15日(周六) | 多云 | 6℃\-10℃ | 辽宁 | 沈阳 | 沈阳 | 101070101 |
16日(周日) | 晴 | 1℃\-13℃ | 辽宁 | 沈阳 | 沈阳 | 101070101 |
17日(周一) | 晴 | -1℃\-15℃ | 辽宁 | 沈阳 | 沈阳 | 101070101 |
11日(今天) | 雨夹雪 | -3℃ | 辽宁 | 大连 | 大连 | 101070201 |
12日(明天) | 多云转晴 | 2℃\-2℃ | 辽宁 | 大连 | 大连 | 101070201 |
13日(后天) | 晴 | 7℃\1℃ | 辽宁 | 大连 | 大连 | 101070201 |
14日(周五) | 晴 | 8℃\2℃ | 辽宁 | 大连 | 大连 | 101070201 |
15日(周六) | 多云转晴 | 9℃\-2℃ | 辽宁 | 大连 | 大连 | 101070201 |
16日(周日) | 晴 | 2℃\-3℃ | 辽宁 | 大连 | 大连 | 101070201 |
17日(周一) | 晴 | 0℃\-5℃ | 辽宁 | 大连 | 大连 | 101070201 |
11日(今天) | 小雨 | 5℃ | 江苏 | 南京 | 南京 | 101190101 |
12日(明天) | 阴转多云 | 10℃\-1℃ | 江苏 | 南京 | 南京 | 101190101 |
13日(后天) | 多云转阴 | 10℃\0℃ | 江苏 | 南京 | 南京 | 101190101 |
14日(周五) | 阴转小雨 | 9℃\4℃ | 江苏 | 南京 | 南京 | 101190101 |
15日(周六) | 小雨转多云 | 9℃\3℃ | 江苏 | 南京 | 南京 | 101190101 |
16日(周日) | 晴转多云 | 16℃\2℃ | 江苏 | 南京 | 南京 | 101190101 |
17日(周一) | 多云 | 12℃\3℃ | 江苏 | 南京 | 南京 | 101190101 |
11日(今天) | 小雨 | 8℃ | 江苏 | 苏州 | 苏州 | 101190401 |
12日(明天) | 阴转晴 | 11℃\1℃ | 江苏 | 苏州 | 苏州 | 101190401 |
13日(后天) | 晴转多云 | 10℃\2℃ | 江苏 | 苏州 | 苏州 | 101190401 |
14日(周五) | 阴转小雨 | 10℃\4℃ | 江苏 | 苏州 | 苏州 | 101190401 |
15日(周六) | 中雨转晴 | 9℃\5℃ | 江苏 | 苏州 | 苏州 | 101190401 |
16日(周日) | 晴转多云 | 15℃\3℃ | 江苏 | 苏州 | 苏州 | 101190401 |
17日(周一) | 多云 | 11℃\2℃ | 江苏 | 苏州 | 苏州 | 101190401 |
11日(今天) | 小雨 | 5℃ | 湖北 | 武汉 | 武汉 | 101200101 |
12日(明天) | 小雨转多云 | 8℃\2℃ | 湖北 | 武汉 | 武汉 | 101200101 |
13日(后天) | 阴转小雨 | 9℃\2℃ | 湖北 | 武汉 | 武汉 | 101200101 |
14日(周五) | 小雨转阴 | 7℃\4℃ | 湖北 | 武汉 | 武汉 | 101200101 |
15日(周六) | 多云 | 16℃\0℃ | 湖北 | 武汉 | 武汉 | 101200101 |
16日(周日) | 多云转阴 | 19℃\1℃ | 湖北 | 武汉 | 武汉 | 101200101 |
17日(周一) | 阴转多云 | 14℃\3℃ | 湖北 | 武汉 | 武汉 | 101200101 |
11日(今天) | 多云 | 7℃ | 浙江 | 杭州 | 杭州 | 101210101 |
12日(明天) | 小雨 | 11℃\3℃ | 浙江 | 杭州 | 杭州 | 101210101 |
13日(后天) | 晴转多云 | 10℃\3℃ | 浙江 | 杭州 | 杭州 | 101210101 |
14日(周五) | 小雨 | 11℃\4℃ | 浙江 | 杭州 | 杭州 | 101210101 |
15日(周六) | 小到中雨转阴 | 9℃\4℃ | 浙江 | 杭州 | 杭州 | 101210101 |
16日(周日) | 晴转多云 | 18℃\2℃ | 浙江 | 杭州 | 杭州 | 101210101 |
17日(周一) | 阴转小雨 | 11℃\3℃ | 浙江 | 杭州 | 杭州 | 101210101 |
11日(今天) | 多云 | 8℃ | 浙江 | 嘉兴 | 嘉兴 | 101210301 |
12日(明天) | 小雨转多云 | 9℃\3℃ | 浙江 | 嘉兴 | 嘉兴 | 101210301 |
13日(后天) | 晴转多云 | 11℃\3℃ | 浙江 | 嘉兴 | 嘉兴 | 101210301 |
14日(周五) | 阴转小雨 | 11℃\5℃ | 浙江 | 嘉兴 | 嘉兴 | 101210301 |
15日(周六) | 小到中雨转多云 | 9℃\4℃ | 浙江 | 嘉兴 | 嘉兴 | 101210301 |
16日(周日) | 晴转多云 | 15℃\1℃ | 浙江 | 嘉兴 | 嘉兴 | 101210301 |
17日(周一) | 阴转小雨 | 11℃\3℃ | 浙江 | 嘉兴 | 嘉兴 | 101210301 |
11日(今天) | 阴 | 8℃ | 浙江 | 绍兴 | 绍兴 | 101210507 |
12日(明天) | 小雨转多云 | 11℃\3℃ | 浙江 | 绍兴 | 绍兴 | 101210507 |
13日(后天) | 晴 | 11℃\3℃ | 浙江 | 绍兴 | 绍兴 | 101210507 |
14日(周五) | 多云转小雨 | 14℃\5℃ | 浙江 | 绍兴 | 绍兴 | 101210507 |
15日(周六) | 小到中雨转阴 | 9℃\4℃ | 浙江 | 绍兴 | 绍兴 | 101210507 |
16日(周日) | 多云转阴 | 17℃\2℃ | 浙江 | 绍兴 | 绍兴 | 101210507 |
17日(周一) | 阴转小雨 | 11℃\3℃ | 浙江 | 绍兴 | 绍兴 | 101210507 |
11日(今天) | 小雨 | 3℃ | 安徽 | 合肥 | 合肥 | 101220101 |
12日(明天) | 阴转晴 | 8℃\-3℃ | 安徽 | 合肥 | 合肥 | 101220101 |
13日(后天) | 多云转阴 | 10℃\-1℃ | 安徽 | 合肥 | 合肥 | 101220101 |
14日(周五) | 阴 | 9℃\0℃ | 安徽 | 合肥 | 合肥 | 101220101 |
15日(周六) | 多云 | 15℃\0℃ | 安徽 | 合肥 | 合肥 | 101220101 |
16日(周日) | 晴转多云 | 17℃\0℃ | 安徽 | 合肥 | 合肥 | 101220101 |
17日(周一) | 阴转多云 | 12℃\0℃ | 安徽 | 合肥 | 合肥 | 101220101 |
11日(今天) | 小雨 | 13℃ | 福建 | 厦门 | 厦门 | 101230201 |
12日(明天) | 中雨 | 17℃\12℃ | 福建 | 厦门 | 厦门 | 101230201 |
13日(后天) | 阴 | 16℃\12℃ | 福建 | 厦门 | 厦门 | 101230201 |
14日(周五) | 多云 | 19℃\13℃ | 福建 | 厦门 | 厦门 | 101230201 |
15日(周六) | 多云转晴 | 22℃\14℃ | 福建 | 厦门 | 厦门 | 101230201 |
16日(周日) | 晴 | 22℃\12℃ | 福建 | 厦门 | 厦门 | 101230201 |
17日(周一) | 晴 | 19℃\10℃ | 福建 | 厦门 | 厦门 | 101230201 |
11日(今天) | 小雨 | 13℃ | 福建 | 泉州 | 泉州 | 101230501 |
12日(明天) | 中雨 | 17℃\11℃ | 福建 | 泉州 | 泉州 | 101230501 |
13日(后天) | 阴 | 13℃\10℃ | 福建 | 泉州 | 泉州 | 101230501 |
14日(周五) | 多云转阴 | 19℃\11℃ | 福建 | 泉州 | 泉州 | 101230501 |
15日(周六) | 多云转晴 | 23℃\14℃ | 福建 | 泉州 | 泉州 | 101230501 |
16日(周日) | 晴 | 21℃\12℃ | 福建 | 泉州 | 泉州 | 101230501 |
17日(周一) | 晴 | 17℃\10℃ | 福建 | 泉州 | 泉州 | 101230501 |
11日(今天) | 小雨 | 8℃ | 江西 | 南昌 | 南昌 | 101240101 |
12日(明天) | 小雨转阴 | 9℃\5℃ | 江西 | 南昌 | 南昌 | 101240101 |
13日(后天) | 多云 | 12℃\5℃ | 江西 | 南昌 | 南昌 | 101240101 |
14日(周五) | 多云转小雨 | 14℃\6℃ | 江西 | 南昌 | 南昌 | 101240101 |
15日(周六) | 多云转晴 | 10℃\5℃ | 江西 | 南昌 | 南昌 | 101240101 |
16日(周日) | 晴 | 16℃\5℃ | 江西 | 南昌 | 南昌 | 101240101 |
17日(周一) | 多云 | 14℃\7℃ | 江西 | 南昌 | 南昌 | 101240101 |
11日(今天) | 小雨 | 6℃ | 湖南 | 长沙 | 长沙 | 101250101 |
12日(明天) | 小雨转阴 | 8℃\4℃ | 湖南 | 长沙 | 长沙 | 101250101 |
13日(后天) | 阴转小雨 | 9℃\4℃ | 湖南 | 长沙 | 长沙 | 101250101 |
14日(周五) | 小雨转中雨 | 7℃\4℃ | 湖南 | 长沙 | 长沙 | 101250101 |
15日(周六) | 小雨转多云 | 13℃\4℃ | 湖南 | 长沙 | 长沙 | 101250101 |
16日(周日) | 晴转多云 | 19℃\5℃ | 湖南 | 长沙 | 长沙 | 101250101 |
17日(周一) | 小雨 | 12℃\6℃ | 湖南 | 长沙 | 长沙 | 101250101 |
11日(今天) | 小雨 | 5℃ | 四川 | 成都 | 成都 | 101270101 |
12日(明天) | 阴 | 12℃\4℃ | 四川 | 成都 | 成都 | 101270101 |
13日(后天) | 多云 | 11℃\1℃ | 四川 | 成都 | 成都 | 101270101 |
14日(周五) | 多云 | 13℃\1℃ | 四川 | 成都 | 成都 | 101270101 |
15日(周六) | 多云 | 15℃\3℃ | 四川 | 成都 | 成都 | 101270101 |
16日(周日) | 多云转阵雨 | 15℃\5℃ | 四川 | 成都 | 成都 | 101270101 |
17日(周一) | 多云转小雨 | 15℃\7℃ | 四川 | 成都 | 成都 | 101270101 |
11日(今天) | 小雨 | 15℃ | 广东 | 广州 | 广州 | 101280101 |
12日(明天) | 小雨 | 21℃\13℃ | 广东 | 广州 | 广州 | 101280101 |
13日(后天) | 阴转多云 | 20℃\13℃ | 广东 | 广州 | 广州 | 101280101 |
14日(周五) | 多云转小雨 | 20℃\15℃ | 广东 | 广州 | 广州 | 101280101 |
15日(周六) | 小雨转多云 | 20℃\13℃ | 广东 | 广州 | 广州 | 101280101 |
16日(周日) | 多云 | 21℃\13℃ | 广东 | 广州 | 广州 | 101280101 |
17日(周一) | 多云 | 21℃\13℃ | 广东 | 广州 | 广州 | 101280101 |
11日(今天) | 阴 | 17℃ | 广东 | 深圳 | 深圳 | 101280601 |
12日(明天) | 小雨转阴 | 21℃\16℃ | 广东 | 深圳 | 深圳 | 101280601 |
13日(后天) | 阴转小雨 | 21℃\15℃ | 广东 | 深圳 | 深圳 | 101280601 |
14日(周五) | 小雨 | 20℃\15℃ | 广东 | 深圳 | 深圳 | 101280601 |
15日(周六) | 小雨转多云 | 21℃\15℃ | 广东 | 深圳 | 深圳 | 101280601 |
16日(周日) | 多云转晴 | 23℃\15℃ | 广东 | 深圳 | 深圳 | 101280601 |
17日(周一) | 晴 | 22℃\15℃ | 广东 | 深圳 | 深圳 | 101280601 |
11日(今天) | 阴 | 16℃ | 广东 | 东莞 | 东莞 | 101281601 |
12日(明天) | 小雨转阴 | 21℃\13℃ | 广东 | 东莞 | 东莞 | 101281601 |
13日(后天) | 多云转阴 | 19℃\13℃ | 广东 | 东莞 | 东莞 | 101281601 |
14日(周五) | 小雨 | 20℃\14℃ | 广东 | 东莞 | 东莞 | 101281601 |
15日(周六) | 小雨转多云 | 20℃\13℃ | 广东 | 东莞 | 东莞 | 101281601 |
16日(周日) | 多云 | 20℃\13℃ | 广东 | 东莞 | 东莞 | 101281601 |
17日(周一) | 多云 | 20℃\14℃ | 广东 | 东莞 | 东莞 | 101281601 |
import requests as re
import sys,time,json,datetime
from bs4 import BeautifulSoup
import pandas as pd
def QhGetCityAll():
"""
获取所有城市
作者:阙辉
"""
QhUrl = "https://j.i8tq.com/weather2020/search/city.js"
QhReq = re.request('get', QhUrl)
QhReq.encoding = 'utf-8'
QhReqText = QhReq.text
QhReqText = QhReqText.replace("var city_data =","")
# print(QhReqText)
QhReqText = json.loads(QhReqText)
QhFlg = 0
QhJieGuo = []
for Qhkey, Qhvalue in QhReqText.items():
QhShengFen = Qhkey
print(Qhkey)
for Qhkey01, Qhvalue01 in Qhvalue.items():
QhShi = Qhkey01
# print(Qhkey01)
for Qhkey02, Qhvalue02 in Qhvalue01.items():
QhXian = Qhkey02 # 县 区
QhAREAID = Qhvalue02["AREAID"]
print(QhShengFen,QhShi,QhXian,QhAREAID)
# QhCityTianQidf = pd.DataFrame()
# QhCityTianQidf["省"] = QhShengFen
# QhCityTianQidf["市"] = QhShi
# QhCityTianQidf["县区"] = QhXian
# QhCityTianQidf["城市id"] = QhAREAID
# if QhFlg == 0:
# QhCityTianQidf0 = QhCityTianQidf
# else:
# QhCityTianQidf0 = QhCityTianQidf0._append(QhCityTianQidf)
# print(QhCityTianQidf)
QhJieGuoROW = []
QhJieGuoROW.append(QhShengFen)
QhJieGuoROW.append(QhShi)
QhJieGuoROW.append(QhXian)
QhJieGuoROW.append(QhAREAID)
QhJieGuo.append(QhJieGuoROW)
QhFlg += 1
QhCityTianQidf0 = pd.DataFrame(QhJieGuo,columns=["省","市","县区","城市id"])
return QhCityTianQidf0
def QhGetCityTianQi():
"""
批量获取城市天气
作者:阙辉
"""
QhGetDF = pd.read_csv("全国城市ok.csv",encoding="gbk")
QhGetDFok = QhGetDF.loc[QhGetDF["是否获取"]==1]
print(QhGetDFok)
QhFlg = 0
for inx, row in QhGetDFok.iterrows():
QhAREAID = row["城市id"]
QhCityTianQidf = QhGetTianQi(QhCityCode = QhAREAID)
QhCityTianQidf["省"] = row["省"]
QhCityTianQidf["市"] = row["市"]
QhCityTianQidf["县区"] = row["县区"]
QhCityTianQidf["城市id"] = row["城市id"]
if QhFlg == 0:
QhCityTianQidf0 = QhCityTianQidf
else:
QhCityTianQidf0 = QhCityTianQidf0._append(QhCityTianQidf)
QhFlg += 1
print(QhCityTianQidf0)
return QhCityTianQidf0
def QhGetCity():
QhUrl = "https://j.i8tq.com/weather2020/search/city.js"
QhReq = re.request('get', QhUrl)
QhReq.encoding = 'utf-8'
QhReqText = QhReq.text
QhReqText = QhReqText.replace("var city_data =","")
# print(QhReqText)
QhReqText = json.loads(QhReqText)
QhCityTianQidf0 = pd.DataFrame()
QhFlg = 0
for Qhkey, Qhvalue in QhReqText.items():
QhShengFen = Qhkey
print(Qhkey)
for Qhkey01, Qhvalue01 in Qhvalue.items():
QhShi = Qhkey01
# print(Qhkey01)
for Qhkey02, Qhvalue02 in Qhvalue01.items():
QhXian = Qhkey02 # 县 区
QhAREAID = Qhvalue02["AREAID"]
print(QhShengFen,QhShi,QhXian,QhAREAID)
QhCityTianQidf = QhGetTianQi(QhCityCode = QhAREAID)
QhCityTianQidf["省"] = QhShengFen
QhCityTianQidf["市"] = QhShi
QhCityTianQidf["县区"] = QhXian
QhCityTianQidf["城市id"] = QhAREAID
if QhFlg == 0:
QhCityTianQidf0 = QhCityTianQidf
else:
QhCityTianQidf0 = QhCityTianQidf0._append(QhCityTianQidf)
print(QhCityTianQidf)
QhFlg += 1
return QhCityTianQidf0
def QhGetTianQi(QhCityCode = "101060504"):
"""
获取单个城市天气
作者:阙辉
"""
QhUrl = 'https://www.weather.com.cn/weather/{}.shtml'.format(str(QhCityCode))
QhReq = re.request('get', QhUrl)
QhReq.encoding = 'utf-8'
QhReqText = QhReq.text
QhSoup = BeautifulSoup(QhReqText, 'html.parser')
QhSoupul = QhSoup.find_all('ul',attrs={'class' : "t clearfix"})
QhSoupul_li = QhSoupul[0].find_all('li')
QhJieGuo = []
for QhRow in QhSoupul_li:
print(QhRow)
QhJieGuoRow = []
QhDate = QhRow.find_all('h1')[0].string # 日期
QhTianQi = QhRow.find_all('p',attrs={'class' : "wea"})[0].string # 天气
QhWenDu0 = QhRow.find_all('p',attrs={'class' : "tem"})[0] # 天气
try:
QhWenDu = QhWenDu0.find("span").string + "\\" + QhWenDu0.find("i").string
except:
try:
QhWenDu = QhWenDu0.find("i").string
except:
QhWenDu = "可能有报错"
QhJieGuoRow.append(QhDate)
QhJieGuoRow.append(QhTianQi)
QhJieGuoRow.append(QhWenDu)
QhJieGuo.append(QhJieGuoRow)
print(QhJieGuo)
QhJieGuodf = pd.DataFrame(QhJieGuo,columns=['日期','天气','温度'])
return QhJieGuodf
if __name__ == "__main__":
# QhJieGuodf = QhGetTianQi(QhCityCode = "101060504")
# print(QhJieGuodf)
# QhJieGuodf.to_csv("天气.csv",encoding='gbk',index=False)
# print(QhGetCity())
# QhCityTianQidf0 = QhGetCity()
# QhCityTianQidf0.to_csv("全国天气.csv",encoding='gbk',index=False)
# QhCityTianQidf0 = QhGetCityAll()
# QhCityTianQidf0.to_csv("全国城市.csv",encoding='gbk',index=False)
QhCityTianQidf0 = QhGetCityTianQi()
QhCityTianQidf0.to_csv("全国天气.csv",encoding='gbk',index=False)