用python爬取 http://www.stats.gov.cn/sj/tjgb/rkpcgb/qgrkpcgb/202302/t20230206_1902003.html 的省份人口数据并生成地区,人口的二维图片
时间: 2023-08-07 09:04:30 浏览: 90
好的,我可以为您提供这个操作的代码。由于您要求生成图片,我们需要使用一些第三方库。请确保您已经安装了以下库:requests、BeautifulSoup4、pandas、matplotlib。
以下是代码:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
# 发送GET请求获取页面内容
url = 'http://www.stats.gov.cn/sj/tjgb/rkpcgb/qgrkpcgb/202302/t20230206_1902003.html'
response = requests.get(url)
response.encoding = 'utf-8'
html = response.text
# 解析页面内容
soup = BeautifulSoup(html, 'html.parser')
table = soup.find('table', class_='MsoNormalTable')
thead = table.find('thead')
th_list = thead.find_all('th')
cols = []
for th in th_list:
cols.append(th.text.strip())
tbody = table.find('tbody')
tr_list = tbody.find_all('tr')
data = []
for tr in tr_list:
td_list = tr.find_all('td')
row = []
for td in td_list:
row.append(td.text.strip())
data.append(row)
# 将数据存储到DataFrame中
df = pd.DataFrame(data, columns=cols)
# 将地区和人口数据转换为列表
areas = df['地区'].tolist()
populations = df['人口(万人)'].astype(int).tolist()
# 生成二维图片
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.bar(areas, populations)
plt.xticks(rotation=90)
plt.title('省份人口数据')
plt.xlabel('省份')
plt.ylabel('人口(万人)')
plt.show()
```
当您运行以上代码时,它将爬取指定的页面并将省份人口数据存储到DataFrame中。然后,它将提取地区和人口数据并将它们转换为列表。最后,它将使用matplotlib库生成一个二维图表,显示各省份的人口数量。
阅读全文