崎combat的战斗章节(5): 抓取历史天气数据
优采云 发布时间: 2020-08-08 07:19在本文中,我们以历史天气数据的捕获为例,简要说明两种数据捕获方式:
1. 通常,数据需求简单或少量,我们会使用request(selenum)+ beautiful捕获数据
2. 当我们需要大量数据时,建议使用scrapy框架进行数据采集. scrapy框架使用异步方法来发起请求,并且数据捕获效率非常高.
以下,我们以网站数据捕获为例,介绍两种数据捕获:
1. 使用request + bs采集天气数据,并使用mysql存储数据
思考:
我们要采集的天气数据存储在地址beijing / month / 201101.html中. 观察URL,我们可以发现URL仅有两个部分在变化,即城市名称和您的年月,并且每年固定地收录12个. 对于月,您可以使用months = list(range(1,13 ))构建月份. 使用城市名称和年份作为变量来构造一个URL列表,这些URL需要采集数据,遍历该列表,请求URL并解析响应以获取数据.
以上是我们采集天气数据的想法. 首先,我们需要构建一个URL链接.
1 def get_url(cityname,start_year,end_year):
2 years = list(range(start_year, end_year))
3 months = list(range(1, 13))
4 suburl = 'http://www.tianqihoubao.com/lishi/'
5 urllist = []
6 for year in years:
7 for month in months:
8 if month < 10:
9 url = suburl + cityname + '/month/'+ str(year) + (str(0) + str(month)) + '.html'
10 else:
11 url = suburl + cityname + '/month/' + str(year) + str(month) + '.html'
12 urllist.append(url.strip())
13 return urllist
通过上述功能,您可以获得需要爬网的URL列表.
<p>如您所见,我们在上面使用了cityname,cityname是我们需要获取的城市的城市名称. 我们需要手动构造它. 假设我们已经构建了一个城市名称列表并存储在mysql数据库中,则需要查询数据库以获取城市名称,遍历城市,并将城市名称,开始年份和结束年份赋予上述功能.