Python爬虫获取空气质量数据

get_text()strip()

get_text()strip() 是 BeautifulSoup 库中用于处理 HTML 元素的方法

get_text()

get_text() 方法是 BeautifulSoup 对象中的一个方法,用于提取 HTML 元素中的文本内容。它会将指定元素及其子元素的文本内容提取出来并返回。

strip()

strip() 方法是 Python 字符串对象的一个方法,用于去除字符串两端的空白字符(如空格、制表符等)。它返回一个新的字符串,该字符串是去除了两端空白字符的原字符串副本。

Python获取一整年的空气质量数据

可以进行数据分析处理(预测,估计)

需要导入的库

  • requests
  • os
  • csv
  • bs4

请求标头

1
2
3
4
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 '
'Safari/537.36 '
}

get获取页面数据

1
2
3
4
5
6
7
8
9
10
11
12
def get_tr(mon : int):
# time.sleep(3)
# 把1转换为01
url = 'http://www.tianqihoubao.com/aqi/guangzhou-2023' + str("%02d" % mon) + '.html'
response = requests.get(url=url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
tr = soup.find_all('tr')
if tr is None:
print("数据获取失败")
else:
print("数据获取成功")
return tr

写入成csv数据文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
file_path = 'air_guangzhou_2023.csv'
if os.path.exists(file_path):
# 文件存在则删除,避免重复数据
os.remove(file_path)
with open(file_path, 'w', newline='', encoding='utf-8-sig') as file:
tr1 = get_tr(2)
for k in tr1[:1]:
td1 = k.find_all('td')
Date = td1[0].get_text().strip()
Quality_grade = td1[1].get_text().strip()
AQI = td1[2].get_text().strip()
AQI_rank = td1[3].get_text().strip()
PM25 = td1[4].get_text().strip()
PM10 = td1[5].get_text().strip()
So2 = td1[6].get_text().strip()
No2 = td1[7].get_text().strip()
CO = td1[8].get_text().strip()
O3 = td1[9].get_text().strip()
writer = csv.writer(file)
writer.writerow([Date,Quality_grade,AQI,AQI_rank,PM25,PM10,So2,No2,CO,O3]) # 写入表头
file.close()

for m in range(1,13):
tr2 = get_tr(int(m))
for j in tr2[1:]:
td2 = j.find_all('td')
Date_num = td2[0].get_text().strip()
Quality_grade_num = td2[1].get_text().strip()
AQI_num = td2[2].get_text().strip()
AQI_rank_num = td2[3].get_text().strip()
PM25_num = td2[4].get_text().strip()
PM10_num = td2[5].get_text().strip()
So2_num = td2[6].get_text().strip()
No2_num = td2[7].get_text().strip()
CO_num = td2[8].get_text().strip()
O3_num = td2[9].get_text().strip()
with open('air_guangzhou_2023.csv', 'a+', encoding='utf-8-sig') as f:
f.write(Date_num + ',' + Quality_grade_num + ',' + AQI_num + ',' + AQI_rank_num + ',' + PM25_num + ',' + PM10_num + ',' + So2_num + ',' + No2_num + ',' + CO_num + ',' + O3_num + '\n')
print(f'成功抓取{m}月份的数据')

以上程序就会保存类型为csv的广州2023年的空气质量指数的数据。

部分数据预览

日期 质量等级 AQI指数 当天AQI排名 PM2.5 PM10 So2 No2 Co O3
2023/1/1 39 71 26 38 5 22 0.73 56
2023/1/2 41 78 27 41 6 20 0.79 52
2023/1/3 47 90 32 44 5 20 0.8 54
2023/1/4 50 82 35 49 6 29 0.8 40
2023/1/5 50 71 33 52 6 41 0.88 38
2023/1/6 46 59 29 47 6 33 0.79 52

一个很好用的在线表格转换工具 - 让表格转换变得更容易 (tableconvert.com)

下载

源码下载

2023广州aqi:air_guangzhou_2023CSV.zip - 蓝奏云 (lanzouq.com)


Python爬虫获取空气质量数据
https://wechatid.github.io/2024/01/26/Python-crawler-air-AQI/
作者
Imscamd
发布于
2024年1月26日
许可协议