首页 > 其他 > 详细

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

时间:2020-05-24 19:07:31      阅读:126      评论:0      收藏:0      [点我收藏+]

热身赛中有这样的提示:

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

 

于是就查了查怎么爬取比赛中所需的天气信息。其实针对数据量不大的数据,可以尝试手动填写特征,由于热身赛给出的数据只有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()

  效果如下:

 技术分享图片

 

 

 

 

 

 

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

原文:https://www.cnblogs.com/xieviki650/p/12952111.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!