犹豫再三、应粉丝的要求,经过几个小时的整理,爬虫案例:全国7天天气、3小时预报、7天生活指数信息的方法,这才与粉丝见面。这次预报信息的提取方法,与 Python编程实践网络爬虫案例:爬取全国天气网,天气信息不用愁 所用方法有所不同,这次在这一个案例里, 对1-7天的日期、天气、温度、风速等天气预报和分时段3小时日期、天气、温度、风速等天气预报、1-7天生活指数预报信息,以及发布时间等信息进行了提取 ,希望粉丝对预报信息的提取有更深的理解。
中央气象台网站提供了1-7天的各要素天气预报和分时段3小时天气预报、1-7天生活指数预报信息。该网站通过气象观测数据和数值模型分析,提供了全国范围内各地区未来7天的天气预报和生活指数。用户可以通过该网站获取准确的天气预报,以便做出相应的气象决策和安排。无论是个人还是专业人士,都可以在中央气象台网站上获取可靠的天气预报信息,以帮助其日常生活或工作中的气象需求。
首先对网站发起请求,获取相应内容,对返回的内容进行解析,最后就保存数据。
通过分析网站返回的内容,天气预报有效信息都在 id="7d",天气预报信息的节点内。如图所示:
我们使用BeautifulSoup模块对网页内容,进行html5lib方式的解析。(BeautifulSoup模块具体使用,后面有时间整理出来分享给粉丝)
查找标签:id='7d',获取标签内容 ,id_7d_conent就包含了7天天气预报、分时段天气预报和生活指数预报)。
分析id_7d_conent的内容,发现7天的天气预报开始时间和更新时间在两个input里面,如下图箭头所示。
一个是id =" fc_24h_internal_update_time"中'value'预报的开始日期时间,另外一个是id="update_time"中'value'是更新时间。代码实例如下:
通过提取,获得7天天气预报的开始日期时间和天气预报结论更新时间。
分析id_7d_conent的内容,发现7天的天气预报 <ul class =" t clearfix ">....</ul> 里面,每天的预报在<li>.....</li>里面,日期、天气、温度、风级,如下图箭头所示。
代码实例如下:
使用了find_all,获得每天预报的html信息,然后对每天的预报html进行进一步解析,得到每天的日期、天气、温度、风级,7天的天气预报分别储存在dates、wws、temps、ddffs。分解结果如下图所示:
分析id_7d_conent的内容,发现3小时天气预报信息的更新时间以个input里面,如下图箭头所示。
id =" fc_3h_internal_update_time " 中 'value' 3小时天气预报信息的更新时间。代码实例如下:
如上图的下面的连个箭头显示,我们发现,分时段天气预报的信息在以,var hour3data= 开头的一行字符串中,7d为7天的分时段天气预报内容。具体内容如下所示:
为了得到分时段天气预报的具体信息,我编写了get_section_forecast函数,lines:就是forecast_text每行的内容,prefix:即使字符串的前缀,取值:var hour3data=,
去掉前缀后,后面的信息就是分时段天气预报的具体信息,而且还是json字符串。
运行结果如下:
分析id_7d_conent的内容,发现生活指数预报信息的更新时间以以个input里面,其id =" zs_7d_update_time " ,如下图箭头所示。
id =" zs_7d_update_time" 中 'value' 生活指数预报信息的更新时间。代码实例如下:
分析forecast_text的内容,我们发现,共有6种指数,分别为:感冒指数、运动指数、过敏指数、穿衣指数、洗车指数、紫外线指数,而且每种指数有三行内容。
为了解析指数内容,我编写了如下函数,lines:就是forecast_text每行的内容,index:取值,感冒指数、运动指数、过敏指数、穿衣指数、洗车指数、紫外线指数6种中的其中一种。返回值为 index的7天的指数预报。
调用函数get_index,并打印出来。
运行结果如下:
看到结果,是不是很兴奋。网络爬虫,也没有想象中的那么高大上,那么高深的理论。希望本教程,给粉丝一个完整的爬虫的思路,对学习有所裨益。
最后,由于平台规则,只有当您跟我有更多互动的时候,才会被认定为铁粉。如果您喜欢我的文章,可以点个“关注”,成为铁粉后能第一时间收到文章推送。