python爬虫之静态网页——全国空气质量指数(AQI)爬取
首先爬取地址:http://www.air-level.com/
利用的python库,最近最流行的requests,BeautifulSoup。
requests:用于下载html
BeautifulSoup:用于解析
下面开始分析:要获取所有城市的aqi,就要进入每个城市的单独链接,而这些链接可以从主页中获取
打开主网页,查看源代码,可以看到,所有的城市链接都在id=‘citylist’里面
把所有链接爬下来存在一个列表里面,然后依次爬取每个城市的单个链接,附代码:
def get_all_city(): # 爬取城市链接url = "http://www.air-level.com"try:kv = {'user-agent': 'Mozilla/5.0'} # 伪装成浏览器,headersr = requests.get(url, headers=kv)r.raise_for_status()r.encoding = r.apparent_encodingexcept:print("爬取城市链接失败")demo = r.textsoup = BeautifulSoup(demo, "html.parser")time = soup.find('h4').stringprint(time)for it in soup.find(id="citylist").children:if isinstance(it, bs4.element.Tag): # 检测it的类型,得是一个bs4.element.Tag类型for its in it.find_all('a'):clist.append(its.get('href')) # 加入列表当中去cnlist.append(its.string)
之后就是每个城市的单独链接的信息爬取,以北京为例,查看源代码可知:
附爬取每个城市代码:
def get_one_page(city): # 获得HTML 爬取城市信息url = "http://www.air-level.com"+cityif city in cwlink:aqilist.append("异常链接")else:try:kv = {'user-agent': 'Mozilla/5.0'} # 伪装成浏览器,headersr = requests.get(url, headers=kv)r.raise_for_status()r.encoding = r.apparent_encodingexcept:print("爬取失败")demo = r.textsoup = BeautifulSoup(demo, "html.parser")s = soup.find("span")aqilist.append(s.string)
但是在爬取的过程中会发现问题,有的一些城市网站用浏览器打不开,也就爬取不了,所以要做处理,
在上面可以看到,本人用cwlist存储了所有异常链接,跳过去,不爬取。
附完整代码:
import requests
from bs4 import BeautifulSoup
import bs4aqilist = [] # 储存城市AQI
clist = [] # 储存城市链接
cnlist = [] # 储存城市名字
cwlink = ["/air/changdudiqu/", "/air/kezilesuzhou/", "/air/linzhidiqu/", "/air/rikazediqu/","/air/shannandiqu/", "/air/simao/", "/air/xiangfan/", "/air/yilihasake/"] # 异常链接def get_one_page(city): # 获得HTML 爬取城市信息url = "http://www.air-level.com"+cityif city in cwlink:aqilist.append("异常链接")else:try:kv = {'user-agent': 'Mozilla/5.0'} # 伪装成浏览器,headersr = requests.get(url, headers=kv)r.raise_for_status()r.encoding = r.apparent_encodingexcept:print("爬取失败")demo = r.textsoup = BeautifulSoup(demo, "html.parser")s = soup.find("span")aqilist.append(s.string)def get_all_city(): # 爬取城市链接url = "http://www.air-level.com"try:kv = {'user-agent': 'Mozilla/5.0'} # 伪装成浏览器,headersr = requests.get(url, headers=kv)r.raise_for_status()r.encoding = r.apparent_encodingexcept:print("爬取城市链接失败")demo = r.textsoup = BeautifulSoup(demo, "html.parser")time = soup.find('h4').stringprint(time)for it in soup.find(id="citylist").children:if isinstance(it, bs4.element.Tag): # 检测it的类型,得是一个bs4.element.Tag类型for its in it.find_all('a'):clist.append(its.get('href')) # 加入列表当中去cnlist.append(its.string)def main():get_all_city()print("共爬取了{}个城市".format(len(clist)))for it in range(len(clist)):get_one_page(clist[it])print("{} {}".format(cnlist[it], aqilist[it]))main()
简单的静态爬取就实现了
转载于:https://www.cnblogs.com/horken/p/10706160.html
python爬虫之静态网页——全国空气质量指数(AQI)爬取相关推荐
- python爬取空气质量指标_python爬虫之静态网页——全国空气质量指数(AQI)爬取
首先爬取地址:http://www.air-level.com/ 利用的python库,最近最流行的requests,BeautifulSoup. requests:用于下载html Beautifu ...
- python爬空气污染实时数据_python爬虫之静态网页——全国空气质量指数(AQI)爬取...
利用的python库,最近最流行的requests,BeautifulSoup. requests:用于下载html BeautifulSoup:用于解析 下面开始分析:要获取所有城市的aqi,就要进 ...
- Python爬虫新手入门教学(十):爬取彼岸4K超清壁纸
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...
- Python爬虫新手入门教学(十七):爬取yy全站小视频
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...
- python爬虫实战之图灵社区图书信息的爬取(找了久,才找到一个比较好爬取的网站)
python爬虫实战之图灵社区图书信息的爬取 程序的描述 目标 获取图灵社区(https://www.ituring.com.cn/book)中40本图书的书名 将获取的信息以列表的形式输出到屏幕上, ...
- Python爬虫新手入门教学(十三):爬取高质量超清壁纸
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...
- python怎么爬取b站_【Python爬虫实例学习篇】——4、超详细爬取bilibili视频
[Python爬虫实例学习篇]--4.超详细爬取bilibili视频 由于经常在B站上学习,但无奈于家里网络太差,在线观看卡顿严重,于是萌生了下载视频的想法(如果只是单纯想下载视频,请用you-get ...
- Python爬虫新手入门教学(二):爬取小说
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...
- python爬虫小说下载到txt文档_python 爬取网络小说 清洗 并下载至txt文件
什么是爬虫 网络爬虫,也叫网络蜘蛛(spider),是一种用来自动浏览万维网的网络机器人.其目的一般为编纂网络索引. 网络搜索引擎等站点通过爬虫软件更新自身的网站内容或其对其他网站的索引.网络爬虫可以 ...
最新文章
- 论文被scoop(抢先发表)是怎样一种体验?
- 南阳理工大学 gnns 新基准
- 基于约束的SQL攻击
- access工资明细表_《ACCESS》工资管理完整(整理).doc
- spring一站式开发_Spring开发人员知道的一件事
- 使用pm2启动node文件_PM2 是什么
- Sub-process returned an error code怎么办
- Java程序设计案例教程
- zmap扫描mysql_网站安全扫描工具 zmap怎么进行全网检测 - 驱动管家
- 新浪微博开放平台接入
- Java P5713 【深基3.例5】洛谷团队系统 洛谷入门题
- Kafka系列 —— 生产实践分享
- 生鲜配送系统源码开发流程教程
- python中 a or b 的值为_若a=1, b=2,那么(a or b)的值为( )。 (2.0分)_学小易找答案...
- 藏宝阁上架服务器信息错误,苦行虚空,难道在处罚中也能上架藏宝阁吗?
- NIO效率高的原理之零拷贝与直接内存映射
- python 数据分析 14天_python数据分析简介
- 2010 27寸 imac 升级固态_新iMac拆解证实 自行加装SSD难如登天
- Win10+Ubuntu双系统安装教程
- easyui-calendar周数