利用的python库,最近最流行的requests,BeautifulSoup。

requests:用于下载html BeautifulSoup:用于解析

下面开始分析:要获取所有城市的aqi,就要进入每个城市的单独链接,而这些链接可以从主页中获取

打开主网页,查看源代码,可以看到,所有的城市链接都在id=‘citylist’里面

把所有链接爬下来存在一个列表里面,然后依次爬取每个城市的单个链接,附代码

import requests

from bs4 import BeautifulSoup

import bs4

def get_all_city():

url='http://www.air-level.com'

try:

# 伪装成浏览器,headers

kv={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'}

r=requests.get(url,headers=kv)

r.raise_for_status()

r.encoding=r.apparent_encoding

except:

print('爬取城市链接失败')

demo=r.text

soup=bs4(demo,'thml.parser')

time=soup.find('h4').string

print(time)

for it in soup.find(id='citylist').children:

if isinstance(it,s4.element.Tag):

for its in it.find_all('a'):

clist.append(its.get('href')) #加入列表当中去18|

cnlist.append(its.string)

之后就是每个城市的单独链接的信息爬取,以北京为例,查看源代码可知:

附爬取每个城市代码:

def get_one_page(city): # 获得HTML 爬取城市信息

url = "http://www.air-level.com"+city

if city in cwlink:

aqilist.append("异常链接")

else:

try:

kv = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'} # 伪装成浏览器,headers

r = requests.get(url, headers=kv)

r.raise_for_status()

r.encoding = r.apparent_encoding

except:

print("爬取失败")

demo = r.text

soup = BeautifulSoup(demo, "html.parser")

s = soup.find("span")

aqilist.append(s.string)

但是在爬取的过程中会发现问题,有的一些城市网站用浏览器打不开,也就爬取不了,所以要做处理,

在上面可以看到,本人用cwlist存储了所有异常链接,跳过去,不爬取。

附完整代码:

import requests

from bs4 import BeautifulSoup

import bs4

aqilist = [] # 储存城市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"+city

if city in cwlink:

aqilist.append("异常链接")

else:

try:

kv = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'} # 伪装成浏览器,headers

r = requests.get(url, headers=kv)

except:

print("爬取失败")

demo = r.text

soup = BeautifulSoup(demo, "html.parser")

s = soup.find("span")

aqilist.append(s.string)

def get_all_city():

url='http://www.air-level.com'

try:

# 伪装成浏览器,headers

kv={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'}

r=requests.get(url,headers=kv)

except:

print('爬取城市链接失败')

demo=r.text

soup=BeautifulSoup(demo,'html.parser')

time=soup.find('h4').string

print(time)

for it in soup.find(id='citylist').children:

if isinstance(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()

输出结果:

D:\application\Anaconda3\python.exe F:/test/venv/learning/test.py

更新时间 2019-03-09 22:00

共爬取了378个城市

北京135 轻度污染

上海83 良

天津99 良

重庆105 轻度污染

广州27 优

南京109 轻度污染

杭州68 良

鞍山137 轻度污染

安庆113 轻度污染

安顺30 优

安阳179 中度污染

安康83 良

阿坝州34 优

阿克苏地区90 良

阿拉善盟64 良

阿勒泰地区40 优

阿里地区10 优

北京135 轻度污染

宝鸡99 良

包头141 轻度污染

保定105 轻度污染

白城66 良

蚌埠123 轻度污染

本溪96 良

白山94 良

白银62 良

亳州126 轻度污染

保山38 优

巴中57 良

北海19 优

毕节30 优

滨州106 轻度污染

百色40 优

博州58 良

巴彦淖尔80 良

重庆105 轻度污染

成都61 良

长春69 良

承德59 良

沧州117 轻度污染

赤峰57 良

常州151 中度污染

常德83 良

长沙101 轻度污染

常熟94 良

长治89 良

朝阳61 良

潮州21 优

郴州39 优

池州89 良

崇左16 优

滁州140 轻度污染

昌吉州92 良

楚雄州36 优

昌都45 优

大连35 优

大同52 良

东莞23 优

丹东106 轻度污染

德州122 轻度污染

东营68 良

大庆51 良

大理州39 优

大兴安岭地区28 优

达州143 轻度污染

德宏州56 良

德阳59 良

定西65 良

迪庆州34 优

鄂尔多斯48 优

鄂州106 轻度污染

恩施州75 良

福州24 优

抚顺156 中度污染

阜阳148 轻度污染

富阳75 良

佛山22 优

阜新46 优

抚州58 良

防城港11 优

广州27 优

广安110 轻度污染

广元56 良

桂林31 优

贵阳52 良

赣州28 优

贵港26 优

固原71 良

甘孜州25 优

甘南州24 优

果洛州23 优

杭州68 良

哈尔滨69 良

合肥94 良

呼和浩特161 中度污染

海口46 优

邯郸126 轻度污染

衡水120 轻度污染

海门19 优

海北州23 优

海东地区47 优

海南州37 优

海西州30 优

哈密地区64 良

汉中75 良

鹤壁125 轻度污染

河池33 优

鹤岗32 优

黑河35 优

湖州68 良

衡阳91 良

和田地区76 良

河源8 优

菏泽130 轻度污染

贺州32 优

红河州95 良

淮安79 良

淮北139 轻度污染

怀化66 良

淮南128 轻度污染

黄山53 良

黄冈150 轻度污染

黄南州46 优

黄石90 良

惠州15 优

葫芦岛123 轻度污染

呼伦贝尔29 优

吉林63 良

济南111 轻度污染

济宁95 良

锦州145 轻度污染

佳木斯32 优

吉安59 良

江门13 优

江阴105 轻度污染

胶南30 优

胶州53 良

焦作120 轻度污染

嘉兴93 良

嘉峪关61 良

揭阳37 优

即墨58 良

金昌72 良

晋城112 轻度污染

景德镇60 良

荆门119 轻度污染

荆州76 良

金华59 良

金坛124 轻度污染

晋中69 良

九江96 良

酒泉41 优

鸡西35 优

句容141 轻度污染

昆明54 良

昆山92 良

开封165 中度污染

库尔勒67 良

克州81 良

喀什地区63 良

克拉玛依55 良

克孜勒苏州异常链接

洛阳109 轻度污染

拉萨49 优

连云港43 优

廊坊81 良

来宾37 优

莱芜141 轻度污染

莱西49 优

莱州58 良

兰州59 良

乐山62 良

凉山州27 优

聊城126 轻度污染

辽阳147 轻度污染

辽源61 良

丽江15 优

临安73 良

临沧59 良

临汾149 轻度污染

临沂105 轻度污染

丽水56 良

六安99 良

六盘水38 优

柳州53 良

溧阳100 良

陇南48 优

龙岩20 优

娄底76 良

漯河165 中度污染

泸州77 良

吕梁83 良

临夏州34 优

林芝22 优

马鞍山119 轻度污染

茂名21 优

眉山46 优

梅州23 优

绵阳56 良

牡丹江58 良

南京109 轻度污染

南昌96 良

南宁31 优

南充95 良

南平13 优

南通64 良

南阳114 轻度污染

宁波92 良

宁德34 优

内江68 良

python爬空气污染实时数据_python爬虫之静态网页——全国空气质量指数(AQI)爬取...相关推荐

  1. python爬取空气质量指标_python爬虫之静态网页——全国空气质量指数(AQI)爬取

    首先爬取地址:http://www.air-level.com/ 利用的python库,最近最流行的requests,BeautifulSoup. requests:用于下载html Beautifu ...

  2. python爬虫之静态网页——全国空气质量指数(AQI)爬取

    首先爬取地址:http://www.air-level.com/ 利用的python库,最近最流行的requests,BeautifulSoup. requests:用于下载html Beautifu ...

  3. python爬空气污染实时数据_python数据分析综合项目--空气质量指数分析

    项目背景 近年来,我国的环境问题比较严重,很多城市出现了雾霾天气,当然也有很多城市空气依旧清新,为了研究具体的空气环境城市分布,我们采用了假设检验以及线性回归的思想对AQI(空气质量指数)进行分析和预 ...

  4. python爬空气污染实时数据_一键爬取空气质量相关指数

    刚刚入门python,想上手一些比较简单的爬虫项目.今天我们来爬一爬一个空气质量指数的网站来获取全国城市的空气质量指数.记得跟着我的思路来哟! 前期准备工作 首先一个舒服的pythonIDLE肯定是必 ...

  5. python爬去朋友圈_python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈。

    昨天小帅b看到一些事情不顺眼 有人偷换概念 忍不住就写了一篇反讽 996 的 没想到有些人看不懂 这就算了 还来骂我 早些时候关注我的小伙伴应该知道我第一时间就发过反对 996 的文章 哎- 不过也好 ...

  6. python爬视频网站数据_python爬虫基础应用----爬取无反爬视频网站

    一.爬虫简单介绍 爬虫是什么? 爬虫是首先使用模拟浏览器访问网站获取数据,然后通过解析过滤获得有价值的信息,最后保存到到自己库中的程序. 爬虫程序包括哪些模块? python中的爬虫程序主要包括,re ...

  7. python代码html显示数据_Python爬虫基础之认识html和学习数据提取(上)

    我:我已经学会了基本的python,接下来可以学什么鸭? 惨绿青年:接下来可以学习制作python爬虫了,但还是需要学习相关的知识. 我:什么知识鸭? 惨绿青年:网页的相关知识.我们看到的网页一般是h ...

  8. python采集直播间数据_Python 爬虫进阶必备 | 某直播数据分析平台加密参数 sign 分析...

    今日网站 aHR0cHMlM0EvL3d3dy5ocmRqeXVuLmNvbS8lM0YlMjMvYW5jaG9yTGlzdA== 被催更了,最近临近特殊时期,所以比较忙,趁着晚上有空来一发. 抓包分 ...

  9. python刷新获取实时数据_Python实时数据更新解决方法

    比如,实现一块区域专门进行最新留言的展示.. 每次有最新的留言就把它显示在上面.. (比如人人影视右下角的"精彩评论", 不知道是不是实时的) 再比如,做一个网站,抓取其他网站上的 ...

最新文章

  1. 一个很不错的让ie6的js兼容 ie7,ie8的库
  2. 设计模式:享元(FlyWeight)模式
  3. 关于storm0.10.0版本的一个小bug
  4. php配置xdebug断点调试
  5. ECSHOP 订单状态 记录
  6. 大数据之Kafka入门简介
  7. 分治法 —— 快速排序和归并排序(自底向上和自顶向下)
  8. asp.net中使用下拉菜单的级联问题
  9. springboot毕业设计 基于springboot房产中介预约看房系统毕业设计设计与实现参考
  10. 新型脑机接口实现无线通信
  11. windows系统下Studio3T下载与安装
  12. html drag 例子,html drag拖拽事件
  13. VM虚拟机分区硬盘/安装win10系统
  14. MySQL中登录报错_mysql登录报错 ERROR 1045 (28000)
  15. 微信小程序流量主广告怎么加圆角
  16. OLED12864模块全屏缓冲刷新
  17. 【Android】判断你的应用在前台还是在后台
  18. spring boot 代理(not eligible for auto-proxying)
  19. 我的大一结束了 —— 总结与规划
  20. Oracle的介绍和概念

热门文章

  1. 高仿QQ源码-界面(1)
  2. 读书笔记:《一分钟经理人 新版》
  3. hive生成日期维度表Hql
  4. FreeRTOS给予裸机编程的思考
  5. linux查看内存_盘点腾讯linux C++后台开发面试题
  6. 利用Hyper-v部署Vista SP1 OS
  7. 银行金融监管与数据质量管理
  8. IOI 2021前四首次被中国包揽!人大附中邓明扬满分夺金,镇海中学再度大秀“基本操作”...
  9. 联想天逸F41无法正常关机
  10. mingw64安装和环境变量配置教程