
上QQ阅读APP看书,第一时间看更新
3.5 一个爬虫案例
虽然前面的基础知识点都通过一些小例子加以解释和说明,但毕竟都是零散的。为了能够将前文的基础知识点串起来,下面给出一个简单的爬虫案例,希望读者在学习该案例的同时,更进一步地认识到基础知识的重要性。
该案例主要是为了获取某城市的历史天气数据,字段包含日期、最低气温、最高气温、风向、风力、天气状况、空气质量指标值、空气质量等级和空气质量说明,所有数据一共包含2544天的记录。下面就详细写出整个爬虫的代码:


代码说明:如上所示的爬虫代码中,绝大多数都添加了相应的注释性语言,另外再解释两点,一个是爬虫中添加字典类型的请求头headers,这样做的目的是为了将Python伪装成一个真实的浏览器,进而促使被访问的网站(或者称服务器)将Python当作一个正常的访问用户;另一个是在爬虫的循环中随机停顿几秒,这样做的目的是为了减轻被访问网站的流量压力,否则单机在一秒内访问对方十几次甚至上百次,会消耗对方很多资源。之所以在代码中添加这两方面的内容,都是为了防止被访问的网站对爬虫代码实施反爬举措,如访问需要输入验证码、重新登录甚至是封闭IP。
最终运行完上面的Python爬虫代码,就可以获得如下结构的数据表:
