报名
本次共享的数据源为“2345天气预报网”(http://tiaqi . 2345 . com/wea _ history/58362 . htm),尤其是2016年以后,数据中增加了与空燃气品质相关的指标,如下图所示:
首先看数据是否直接嵌入到html页面中。最有效的方法是在原页面中选择不同的年份和月份,看看链接是否发生变化。经过测试,网页链接没有变化,这意味着天气数据必须异步存储在其他文件中,然后才会找到存储数据的文件。
按照爬虫的一般套路,先在原网页中按F12快捷键,选择Network,然后从原网页中选择不同的年份或月份,就会找到那个来自XHR或JS的文件。显然,这里的天气数据存储在JS文件中:
下一步是确定这个文件的链接地址。如下图所示,这个链接还是很简单的。你可以选择不同的年份或者月份,找到这些链接的规则,然后一次性生成这些定期链接。
#为以后的爬虫生成所有目标链接
URL =[]
年度变化(2011,2018):
对于月范围(1,13):
ifyear <。= 2016:URLs . append(' http://tiaqi . 2345 . com/t/wea _ history/js/58362 _ % s % s . js ' %(年、月))
else:
ifmonth<。10:URLs . append(' http://天桥. 2345 . com/t/wea _ history/js/% s0 % s/58362 _ % s0 % s . js ' %(年、月、年、月))
else:URLs . append(' http://天桥. 2345 . com/t/wea _ history/js/% s % s/58362 _ % s % s . js ' %(年、月、年、月))
让我们以URL中的第一个链接为例,看看我们能从中捕捉到什么:
#导入模块
导入请求
#发送对目标链接的请求
URL = URL[0]response = requests . get(URL)。textresponse
太棒了,可以获得所有与天气相关的数据,然后通过正则表达式将每个关注的字段存储在列表中:
#导入模块
进口
#常规匹配
ymd = re.findall( "ymd:'(。*?)',",response)high = re . findall(" bwend:'(。*?)℃',",响应)low = re.findall( "yWendu:'(。*?)℃',",响应)天骐= re.findall("天骐:'(。*?)',",回应)凤翔= re.findall("凤翔:(。*?)',",响应)丰里= re.findall(",丰里:'(。*?)'",响应)aqi = re.findall( "aqi:'(。*?)',",response)aqiInfo = re . find all(" aqiInfo:'(。*?)',",响应)aqiLevel = re.findall(",aqile level:'(。*?)’”,回应)
最后,您可以使用for循环获取所有链接的数据,并获得一个如下形式的表:
标签
好了,今天的内容到此结束。如果您需要数据或代码,可以用工作号回复“上海天奇”。
-结束-
图文来源于网络。如果涉及版权问题,请联系我们处理。张文的内容纯属作者个人意见,不代表本网站的意见。
1.《上海历史天气 上海历史天气和空气质量数据获取(Python版)》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《上海历史天气 上海历史天气和空气质量数据获取(Python版)》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/862716.html