|
发表于 2024-4-9 09:47:00
|
显示全部楼层
很抱歉,我在代码中出现了一些错误。在 `crawl_districts()` 函数中,我忘记将获取到的编码和名称添加到数据列表 `data` 中了。下面是修改后的代码:import requestsfrom bs4 import BeautifulSoupfrom openpyxl import Workbookdef crawl_districts(url, data): response = requests.get(url) response.encoding = response.apparent_encoding 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]) # 递归处理下一级行政区划 for a in soup.find_all('a', target='_blank'): next_url = 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 = '[url=https://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/index.html']https://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/index.html'[/url] data = [] crawl_districts(url, data) save_to_excel(data, 'E:/Temp/行政区划.xlsx')在修改后的代码中,我将 `code = tds[0].text.strip()` 和 `name = tds[1].text.strip()` 修改为了从 `tds` 列表中取出正确的编码和名称。另外,我将 `"for a in soup.select('table.citytable a')"` 修改为了 `"for a in soup.find_all('a', target='_blank')"`,因为实际网页中使用的是 `<a>` 标签而不是 CSS 类选择器。这样,爬取的编码和名称数据就会正确地添加到数据列表 `data` 中,并保存到 Excel 文件中了。希望这次修改能够解决问题。如果还有其他问题,请随时向我提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|