非常抱歉之前的回复中代码格式和注释未正确显示。以下是修正后的代码,并附上了注释说明:
import requests
from bs4 import BeautifulSoup
from openpyxl import Workbook
def crawl_districts(url, data):
# 发起GET请求获取网页内容
response = requests.get(url)
response.encoding = response.apparent_encoding
# 使用BeautifulSoup解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')
# 定位行政区划表格
table = soup.find('table', class_='countytable')
if table:
for tr in table.find_all('tr'):
tds = tr.find_all('td')
if len(tds) == 3:
code = tds[0].text.strip() # 获取编码
name = tds[1].text.strip() # 获取名称
data.append([code, name]) # 将编码和名称存入列表data
# 查找下一页链接并递归调用crawl_districts函数
for a in soup.find_all('a', target='_blank'):
next_url = f"{url.rsplit('/', 1)[0]}/{a['href']}" # 拼接下一页链接
crawl_districts(next_url, data)
def save_to_excel(data, filename):
wb = Workbook() # 创建一个工作簿
sheet = wb.active # 获取活动工作表
sheet.title = '行政区划' # 设置工作表标题
headers = ['编码', '名称'] # 列标题
sheet.append(headers) # 写入列标题
# 逐行写入行政区划数据
for row in data:
sheet.append(row)
wb.save(filename) # 保存工作簿到文件
if __name__ == "__main__":
url = 'https://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/index.html'
data = [] # 存储行政区划数据的列表
crawl_districts(url, data) # 爬取行政区划数据
save_to_excel(data, 'E:/Temp/行政区划.xlsx') # 将数据保存到Excel文件
希望这次的回答能够符合你的要求。如果还有其他问题,请随时提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |