崎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数据库中,则需要查询数据库以获取城市名称,遍历城市,并将城市名称,开始年份和结束年份赋予上述功能.

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线