Python爬取全国空气质量信息,空气质量最好的居然是它!

主要模块

  • requests模块。使用requests模块来获取http响应
  • gevent模块。使用gevent开启多个协程,加快爬取速度
  • re模块或beautifulsoup模块。正则表达式解析与beautifulsoup解析两种解析方式我都会写出来。
  • csv模块。用于将数据导出至csv文件内

分析过程

1.要爬取的页面的URL地址为: http://www.tianqihoubao.com/aqi/ 。首先访问该页面(如下图)获取所有城市a标签的href属性,知道了各个城市的api,就可以接着爬取每个城市具体的空气质量了。

2.打开chrome的调试页面,可以看到,a标签在dd标签下,而且整个页面,只有dd标签下只要a标签没有其他标签了。所以正则匹配或使用BS4查找元素时,都可以先找dd标签,再找下面的a标签的href属性。(整个页面只有这里有dd标签,所以要查找dd标签)

3.找到每个城市的url后,再点击去看,发现是月份选择,这里是2020年3月为例,点进去。可以看到,找到了我们需要的空气质量信息。接下来就看如何从页面中将天气信息提取出来。

<
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
爬取全国空气质量信息,可以通过访问国家环保部网站(http://www.mee.gov.cn/),找到空气质量相关的数据。 具体实现方法: 1. 首先,需要用requests模块向国家环保部网站发起请求,获取相应的HTML页面。 ```python import requests url = "http://www.mee.gov.cn/ywgz/fgbz/bzwb/dqhjbh/dqhjzlbz/index.shtml" response = requests.get(url) html = response.content.decode("utf-8") ``` 2. 接下来,需要使用BeautifulSoup模块解析HTML页面,获取想要的数据。 ```python from bs4 import BeautifulSoup soup = BeautifulSoup(html, "html.parser") table = soup.find("table", {"class": "content"}) trs = table.find_all("tr") for tr in trs[1:]: tds = tr.find_all("td") city = tds[1].get_text() aqi = tds[2].get_text() print(city, aqi) ``` 3. 最后,将获取的数据存储到本地文件中。 ```python with open("aqi.txt", "w", encoding="utf-8") as f: for tr in trs[1:]: tds = tr.find_all("td") city = tds[1].get_text() aqi = tds[2].get_text() f.write(city + "\t" + aqi + "\n") ``` 完整代码如下: ```python import requests from bs4 import BeautifulSoup url = "http://www.mee.gov.cn/ywgz/fgbz/bzwb/dqhjbh/dqhjzlbz/index.shtml" response = requests.get(url) html = response.content.decode("utf-8") soup = BeautifulSoup(html, "html.parser") table = soup.find("table", {"class": "content"}) trs = table.find_all("tr") with open("aqi.txt", "w", encoding="utf-8") as f: for tr in trs[1:]: tds = tr.find_all("td") city = tds[1].get_text() aqi = tds[2].get_text() f.write(city + "\t" + aqi + "\n") ``` 这段代码可以爬取国家环保部网站上的全国空气质量信息,并将其保存到本地文件aqi.txt中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值