整体思路
我们进入天气网首页:http://lishi.tianqi.com/,选择想要查询的城市和月份,以北京2019年10月历史天气为例,注意链接地址的含义:http://lishi.tianqi.com/beijing/201709.html链接中的beijing代表地区,201709代表时间。也就是说我们可以通过控制这两个参数,跳转到任意地区和时间的历史天气状况页面。滚动页面,可以找到我们想要爬取的数据:
现在,我们已经有了大概的思路:
- 先实现如何抓取某一特定页面的数据,例如广州市2017年9月的历史数据。
- 通过控制地区和时间这两个参数,并利用1中的方法,实现多地区或多时间的历史天气数据抓取。
不难看出,我们的重点是如何解决第一个问题。只要把第一问中的方法包装成函数,就可以通过调节参数解决第二个问题。
抓取特定页面的数据
首先用paste0将链接拼接起来
baseUrl <- 'http://lishi.tianqi.com/'
Url <- paste0(baseUrl, city, '/', date, '.html', sep = '')
Url
我们需要在浏览器中调试js代码,chrome中按F12即可查看。通过搜索关键字:日期,最高气温 …任何一个都行,得到以下信息。可以发现我们所需要的数据都在<div class="lishitable">
盒子中,而每一行数据又都在ul中。所以,我们可以通过这两个特征来提取数据。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200221113847396.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDI2MjE5Ng==,size_16,color_FFFFFF,t_70