新手转专业学生,导师突然安排个小活,爬取100多个城市的未来15天天气数据。
网页上有一些爬取7天的案例,通过学习也不是很难。
这里推荐几个我认为做的很详细的链接,大家可以去学习(热心地帮助大家节省时间)
https://blog.csdn.net/heshushun/article/details/77772408
http://blog.sina.com.cn/s/blog_132d8ac0d0102wmpl.html
我的这篇文章在这些前辈无私分享的基础上完成的,感恩。
一、获取URL,分析网页源码
这里给大家两种方法。
①登录到中国天气网网页(以北京为例:http://www.weather.com.cn/weather15d/101010100.shtml)
界面如上图。按F12会屏幕下方出现源码,然后在8-15天天气位置右键,点击审查元素,或者ctrl+shift+l。
②通过urllib命令request命令
参考代码:
# -*- coding: UTF-8 -*- from urllib import request if __name__ == "__main__": response = request.urlopen("http://www.weather.com.cn/weather15d/101010100.shtml") html = response.read() html = html.decode("utf-8") print(html)
可以在pycharm或者sublime运行直接出结果。为了查看方便,我把8-15天天气部分拷贝到了有道云笔记
这里的源码格式还算整齐,与7天天气只是些许的标签不同,头疼的就是气温那里,最低气温部分少标签
(<span class="tem"><em>29℃</em>/17℃</span>)
二、爬取数据
一个小白摸索了很长时间,没找到很好的方法,最后还请教了计算机系好友——用正则表达式方法。
网页上关于正则表达式的科普文章千篇一律,在我看来纸上谈兵没什么意思,大家学习时可以找一些有实践应用例子的帖子。
这里我参考的文章链接:https://www.jianshu.com/p/d1bf2f0bdc51
文章的处理细节不是很精细,需要弄清爬虫的框架进行一些调整,新手宝宝不要完全照抄。
def get_data2(html, city): soup = BeautifulSoup(html, 'html.parser')