2021-05-10

2011至2020年武汉历史天气数据采集与分析

本实验主要采用了Python中的beautifulsoup库、pandas库、requests库来爬取’http://lishi.tianqi.com/wuhan’内近十年武汉的天气。

实验环境:Python下的beautifulsoup库、pandas库、requests库

实验内容:2011年至2020年年武汉历史天气数据

实验目的:运用所学网络爬虫技术,爬取武汉近十年的历史天气(http://lishi.tianqi.com/wuhan)。

实验步骤:
① 导入requests库、beautifulsoup库和pandas 库。requests库用于处理HTTP请求的第三方库;bs4库用于解析和处理HTML和XML的第三方库;使用pandas 库存储非数值数据。
② 定义一个函数,利用循环导出2011年至2020年的武汉天气的相关网址。
③ 爬取数据,并进行整合处理。

实验代码:
2021-05-10
2021-05-10
import requests
from bs4 import BeautifulSoup
import pandas as pd
cookies = {‘cookies’:‘UM_distinctid=175583cf8801f8-097a18d2b1557c-f7b1332-190140-175583cf881978; CNZZDATA1275796416=1099497312-1603503040-%7C1603503040; Hm_lvt_ab6a683aa97a52202eab5b3a9042a8d2=1603503192; Hm_lpvt_ab6a683aa97a52202eab5b3a9042a8d2=1603503192’}
headers = {‘User-Agent’:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36’}
def getTianqi(url):
rawhtml = requests.get(url,headers = headers,cookies=cookies).content
soup = BeautifulSoup(rawhtml, ‘html.parser’)

tqdiv = soup.find_all('div', {'class': "tian_three"})

lis = tqdiv[0].find_all('li')

dates = [ li.find_all('div')[0].string for li in lis]
maxtemp =  [ int(li.find_all('div')[1].string.replace('℃','')) for li in lis]
mintemp =  [ int(li.find_all('div')[2].string.replace('℃','')) for li in lis]
tianqi =  [ li.find_all('div')[3].string for li in lis]
fengxiangfengli =  [ li.find_all('div')[4].string for li in lis]


tq = pd.DataFrame({
    'date': dates,
    'maxtemp': maxtemp,
    'mintemp' : mintemp,
    'tianqi': tianqi,
    'fengxiang' : fengxiangfengli,
   })
return tq

TianqiData = pd.DataFrame({})
import time

for year in range(2011,2021):
for month in range(1,13):
month = ‘%02d’ % month
url = ‘http://lishi.tianqi.com/wuhan/’ + str(year) + month + ‘.html’

    df = getTianqi(url)    
    TianqiData = pd.concat([TianqiData, df], ignore_index=True)

TianqiData

实验结果:
2021-05-10
2021-05-10

上一篇:多线程3


下一篇:python运算符与格式化输出