爬虫难度排行"/>
python爬虫难度排行
总述
爬取中国天气网中各省份,各城市的最低气温,并且对爬取的数据进行排序以及数据可视化。
分析html结构
映入眼帘的是一个名为conMidtab2的div盒子,这个盒子里放了一张表格,表格正文tbody里放了十多
个表行tr,每个tr中有几个标准单元格td。下面的div盒子结构完全一致,不再分析,结合下图:
我们知道,一个tbody中的第3个tr中的第1个td与第2个td中 ,分别存放着省份信息与第1个城市信息;
第4个tr中的第1个td中存放着第2个城市的信息;注意第1个城市的特殊情况!
requests & BeautifulSoup
1.requests
requests 是基于urllib的开源HTTP库
我们首先定制header,模拟浏览器访问网站
键入 r = requests.get('')获取一个网页,键入 r.text 获取网页内容
2.BeautifulSoup
BeautifulSoup是一个从HTML或者XML中提取数据的python库。
键入conMidtab = soup.find('div', class_='conMidtab')
搜索第一个带有 conMidtab 属性的div标签。
键入 conMidtab2_list = conMidtab.find_all('div', class_='conMidtab2')
搜索所有带有conMidtab2属性的div标签
获取省份与城市
通过for循环遍历BeautifulSoup获取到的conMidtab2_list数据
键入 tr_list = x.find_all('tr')[2:] 查找第三个及其以后的tr
再对tr_list进行遍历,这里按照上面分析分为两类。,即第3个tr中第1个td是省份,第2个td是城市,
第8个td是最低气温;第4个tr及其以后tr中第1个td是城市;
排序
使用sorted对爬取得到的各省份各城市的最低气温进行排序
键入 SORTED_TEMPERATURE_LIST = sorted(TEMPERATURE_LIST, key=lambda x: (int(x['min'])))
为了展示需要,这里我只选择前20低的数据进行数据可视化
TOP20_TEMPERATURE_LIST = SORTED_TEMPERATURE_LIST[0:20]
数据可视化
选取排序后的20个数据进行数据可视化,我采取柱状图
bar = Bar('主标题','副标题')
bar.add("tem", 横坐标值, 纵坐标值, is_more_utils=True )
键入 bar.show_config()
bar.render()
返回一个html在你的文件夹里
点击即可看见图表
源码
更多推荐
python爬虫难度排行
发布评论