用Python爬取http://www.stats.gov.cn/sj/tjgb/rkpcgb/qgrkpcgb/202302/t20230206_1902003.html的地区人口数据并生成可视化图片文件
时间: 2023-08-12 14:06:28 浏览: 200
好的,我可以帮你解决这个问题。不过在开始之前,需要先安装一些必要的库。请使用以下命令安装它们:
```
pip install requests beautifulsoup4 pandas matplotlib
```
然后,我们可以开始编写爬虫程序了。以下是代码:
```python
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
url = "http://www.stats.gov.cn/sj/tjgb/rkpcgb/qgrkpcgb/202302/t20230206_1902003.html"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
res = requests.get(url, headers=headers)
res.encoding = res.apparent_encoding
soup = BeautifulSoup(res.text, "html.parser")
table = soup.find("table")
data = []
for tr in table.find_all("tr"):
row = []
for td in tr.find_all("td"):
row.append(td.text.strip())
if len(row) > 0:
data.append(row)
df = pd.DataFrame(data[1:], columns=data[0])
df.set_index("地区", inplace=True)
df = df.astype(int)
plt.rcParams['font.sans-serif'] = ['SimHei']
df.plot(kind="bar", stacked=True, figsize=(15, 10))
plt.title("各地区人口数量")
plt.xlabel("地区")
plt.ylabel("人口数量")
plt.savefig("population.png")
```
这个程序会首先访问给出的网址,并使用 BeautifulSoup 库解析 HTML。然后,它会找到页面上的表格,并将表格中的数据转换为 Pandas DataFrame。最后,它会使用 Matplotlib 库生成一个堆叠条形图,并将图形保存为一个名为 "population.png" 的文件。
你可以将代码保存为一个 Python 文件,例如 "population.py",并在命令行中运行它,然后就会生成一个可视化图片文件。
阅读全文