viki650

导航

2020中国高校计算机大赛 华为云大数据挑战赛--热身赛--爬取天气数据

热身赛中有这样的提示:

小提示:如果不考虑天气、周边活动、节假日等因素,预测结果可能不准确哦。

 

于是就查了查怎么爬取比赛中所需的天气信息。其实针对数据量不大的数据,可以尝试手动填写特征,由于热身赛给出的数据只有28天的数据,其实是可以手动添加的

但是数据量一多,如果是给一年的数据,手动添加是不太可能的。

下面变记录一下爬虫的过程。

 

一、 安装库

  python 中先安装 request 和 bs4 

 

二、需要爬取网页  

  热身赛需要爬去的是深圳1、2月信息

  这两个网址分别记录了深圳1、2月的天气信息 

  http://lishi.tianqi.com/shenzhen/201901.html

  http://lishi.tianqi.com/shenzhen/201902.html 

urls = [ "http://lishi.tianqi.com/shenzhen/201901.html",
          "http://lishi.tianqi.com/shenzhen/201902.html"]

 

三、创建文件存储信息

  

files = open('shenzhen_weathe.csv','w')

 

四、建立连接

  连接之前需要修改request中的用户名。原始用户名会直接告诉web服务器访问的是python,于是会被拒绝访问  

kv = {'user-agent':'Mozilla/5.0'} 

  建立连接  

response = requests.get(url,headers=kv)
soup = BeautifulSoup(response.text,'html.parser')

  此时soup中就是爬去的网站信息了。实际上soup就是获取了这个网站的html,像这个网站把数据都写在了html文件里,所以就可以直接分析了。

  可以看到,所有天气信息都是在<ul class="thrui">中,而每一天的天气信息都在 li 标签中的div中

  

  所以通过循环处理就可以获得信息  

weather_list = soup.select('ul[class="thrui"]')

    for weather in weather_list:
        li_list = weather.select('li')

        for li in li_list:
            div_items = li.select('div')
            str = ""
            for div in div_items:
                str += div.string+','

            files.write(str+'\n')

 

五、整体代码+效果

  

import requests
from bs4 import BeautifulSoup

urls = [ "http://lishi.tianqi.com/shenzhen/201901.html",
          "http://lishi.tianqi.com/shenzhen/201902.html"]

files = open('shenzhen_weathe.csv','w')

kv = {'user-agent':'Mozilla/5.0'}  #更换用户信息,变成浏览器模式

for url in urls:
    response = requests.get(url,headers=kv)
    soup = BeautifulSoup(response.text,'html.parser')
    weather_list = soup.select('ul[class="thrui"]')

    for weather in weather_list:
        li_list = weather.select('li')

        for li in li_list:
            div_items = li.select('div')
            str = ""
            for div in div_items:
                str += div.string+','

            files.write(str+'\n')

files.close()

  效果如下:

 

 

 

 

 

 

 

posted on 2020-05-24 18:35  viki650  阅读(419)  评论(0编辑  收藏  举报