本文共 2849 字,大约阅读时间需要 9 分钟。
python 爬虫实例一:我们用前面讲到的request和bs4来爬取历史天气,并且将数据展示出来。
要爬取的网站:url = 'http://tianqihoubao.com/lishi/beijing/month/202101.html'
import requestsfrom bs4 import BeautifulSoupurl = "http://tianqihoubao.com/lishi/beijing/month/202101.html"response = requests.get(url)response.encoding = "gbk"text = response.textprint(text)
解析网页之后,在里面看到我们想要的天气情况。
我们用bs4来解析网页;import requestsfrom bs4 import BeautifulSoupurl = 'http://tianqihoubao.com/lishi/beijing/month/202101.html'response = requests.get(url)response.encoding = "gbk"text = response.textsoup = BeautifulSoup(text,'lxml')#忘记find_all方法的可以看上一篇python爬虫基础(二)tr_list = soup.find_all('tr')#展示出来的内容我们通过字符串截取想要的内容,去掉多余空格for data in tr_list[1:]: sub_data = data.text.split() #通过text获取当前标签内容 print(sub_data)
打印出的数据,以列表的形式展示。
我们将爬虫的程序封装成函数,这样我们就可以爬取多个月份的天气数据了。import requestsfrom bs4 import BeautifulSoupimport pandas as pddef get_wea(url): response = requests.get(url) response.encoding = "gbk" text = response.text soup = BeautifulSoup(text,'lxml') tr_list = soup.find_all('tr') #定义三个列表,取出爬到的日期,天气状况,气温 date,con,temp = [],[],[] for data in tr_list[1:]: sub_data = data.text.split() #通过text获取当前标签内容 date.append(sub_data[0]) con.append(''.join(sub_data[1:3])) temp.append(''.join(sub_data[3:6])) data = pd.DataFrame()#二维数据类型,表格 data['日期'] = date data['天气'] = con data['温度'] = temp return data month_1 = get_wea('http://tianqihoubao.com/lishi/beijing/month/202101.html')month_2 = get_wea('http://tianqihoubao.com/lishi/beijing/month/202102.html')month_3 = get_wea('http://tianqihoubao.com/lishi/beijing/month/202103.html')data = pd.concat([month_1,month_2,month_3]).reset_index(drop=True)#将表格拼接data.to_csv('beijing.csv',index = False,encoding='utf-8')print('successful')
在代码保存的地方生成一个beijing.csv文件,用Excel打开,展示数据。
当然也可以用代码打开文件展示出来;全部数据是90行乘以3列。import pandas as pddata = pd.read_csv(r'beijing.csv')data
#数据可视化import pandas as pdimport matplotlib.pyplot as pltdata = pd.read_csv(r'beijing.csv')
因为最高气温、最低气温在一个列数据中,并且是字符串,所以我们要先把他们分开,并且装换成整数型数据。
#将气温数据分开data['最高气温'] = data['温度'].str.split('/',expand=True)[0]data['最低气温'] = data['温度'].str.split('/',expand=True)[1]#将数据装换成整数型data['最高气温'] = data['最高气温'].map(lambda x:int(x.replace('℃','')))data['最低气温'] = data['最低气温'].map(lambda x:int(x.replace('℃','')))
#根据数据绘制图形figure = plt.figure(figsize=(15,8))plt.plot(date,high,c='orange',alpha=0.5)plt.plot(date,low,c='blue',alpha=0.5)#给图表区域着色#fill_between(x,y,facecolor,alpha) alpha指定的是透明度(0表示完全透明,1表示不透明)plt.fill_between(date,high,low,facecolor='purple',alpha=0.1)plt.show()
爬虫就是为了获取数据,获取数据当然是为了分析数据,得到数据背后的规律、信息。本次只是简单地展示历史气温的一个变化趋势。pyecharts和matplotlib库都可以用来做图表数据分析,后期会继续更新相应的文档。
博客只是简单的展示一些东西,如果有机会,后面会推出详细的视频讲解,实现更专业的数据挖掘和数据分析的知识。 如果你觉得我的内容对你的学习有帮助,请点击关注后续更新内容,又问题也可以私信,一起讨论。转载地址:http://zqoxi.baihongyu.com/