python爬虫获取历史天气信息

想要获得一个城市的历史天气,可以在天气后报网站上查询获得
如果要通过大量历史天气数据做分析,可以通过爬虫的方式获得。
如,我们要查询北京2020年9月的天气汇总。可以看到网站界面如图所示
在这里插入图片描述
要爬取这个列表中的数据,首先设置headers,headers是解决requests请求反爬的方法之一,相当于我们进去这个网页的服务器本身,假装自己本身在爬取数据。对反爬虫网页,可以设置一些headers信息,模拟成浏览器取访问网站。

headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate, compress',
    'Accept-Language': 'en-us;q=0.5,en;q=0.3',
    'Cache-Control': 'max-age=0',
    'Connection': 'keep-alive',
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'
}

说明:
(1)根据网页网址信息,可以替换其中的城市名称及年月信息爬取需要的天气数据
(2)beautiful soup 是Python的一个HTML或XML的解析库。他提供一个简单的、Python式的函数来处理导航、搜索、修改分析数等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据。
beautiful soup 自动将输入文档转化为Unicode编码,输出文档转化为utf-8编码,不需要考虑编码方式。
(3)生成天气数据表,这里把最高温和最低温区分开来。

def GetWeather(year,month,city):
    url = 'http://www.tianqihoubao.com/lishi/'+city+'/month/'+year+month+'.html'  
    htmlsingle = requests.get(url, headers=headers)
    t=htmlsingle.text.encode(htmlsingle.encoding)
    soup=BeautifulSoup(t,'lxml')  
    TextList = []
    tagh3 = soup.find_all('td')
    del tagh3[:4]
    for each in tagh3:
        TextList.append(each.text)
    TextList = [re.sub('[\n\r ]','',v) for v in TextList]
    WeatherDf = pd.DataFrame(np.array(TextList).reshape(int(len(TextList) / 4),4))
    WeatherDf.columns = ['date','weather','high_low','wind']
    low = []
    high = []
    for i in range(0,len(WeatherDf)):
        a = re.search('/', WeatherDf.high_low[i]).span()
        high.append(WeatherDf.high_low[i][:a[0]].replace("℃",""))
        low.append(WeatherDf.high_low[i][a[1]:].replace("℃",""))
    WeatherDf['high'] = high
    WeatherDf['low'] = low
    WeatherDf = WeatherDf.loc[:,['date','weather','high','low','wind']]
    return WeatherDf

爬取到的北京市2020年9月的历史天气数据为
在这里插入图片描述

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Python爬虫爬取2345历史天气数据,可以按照以下步骤进行操作: 1. 首先,你需要使用Python的requests库发送HTTP请求,获取2345网站的页面源代码。你可以使用requests.get()方法来发送GET请求,将2345网站的URL作为参数传递给该方法。 2. 检查2345网站的页面源代码,确认历史天气数据不在其中。这意味着历史天气数据是通过动态加载获取的。 3. 使用抓包工具,如Fiddler、Charles或Wireshark,来拦截并分析2345网站页面的网络请求。在抓包工具中,你可以找到包含历史天气数据的请求,通常是一个XHR请求。 4. 在Python中,你可以使用抓包工具获取到的XHR请求的URL,通过requests库发送HTTP请求,获取历史天气数据的响应。可以使用requests.get()方法,将XHR请求的URL作为参数传递给该方法。 5. 解析历史天气数据的响应,你可以使用Python的JSON库来解析响应数据。根据响应的数据格式,你可以使用json.loads()方法将响应数据转换为Python对象,如字典或列表。 6. 将解析得到的历史天气数据保存到本地文件或数据库中,你可以使用Python的文件操作或数据库操作库来实现。 需要注意的是,爬取网站数据时应遵守相关法律法规和网站的使用条款,确保合法性和合规性。同时,还需要注意设置适当的请求头信息,以避免被目标网站识别为爬虫程序并阻止你的请求。 希望以上步骤对你爬取2345历史天气数据有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python爬取2345天气网](https://blog.csdn.net/hhq2002322/article/details/127615212)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Python爬虫实战-爬取历史天气数据](https://blog.csdn.net/qq_31903733/article/details/85269367)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值