You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Requests爬取德国邮编人口数据遇404错误的解决求助

解决德国邮编人口数据爬取问题及替代方案

一、修复当前网站的404问题

请求返回404的核心原因之一是URL不匹配:目标网址末尾带有斜杠/,而你代码中使用的URL缺少该斜杠,可能导致服务器路由匹配失败。先修正URL并补充更完整的请求头,提升请求通过率:

import requests
from bs4 import BeautifulSoup

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1'
}
# 修正为带末尾斜杠的目标URL
url = 'https://postal-codes.cybo.com/germany/'
r = requests.get(url, headers=headers)

print(r.status_code)
soup = BeautifulSoup(r.text, 'html.parser')
print(soup.title.text)

如果修正后仍返回404或被拦截,说明网站存在反爬机制,可尝试:

  • 使用requests.Session()保持会话,模拟浏览器连续请求的状态
  • 加入随机延迟(import time; time.sleep(random.uniform(1,3)))降低请求频率
  • 若数据为动态加载,改用selenium或playwright模拟真实浏览器渲染页面

二、爬取目标数据的实现思路

若成功访问页面,可按以下步骤提取数据:

  1. 从列表页解析所有邮编区域的详情页链接,逐个遍历访问
  2. 在单个邮编页面中,通过BeautifulSoup定位邮编、城市、人口、区域及分性别人口对应的HTML元素,提取文本内容
  3. 将提取的数据整理为字典或DataFrame,保存为CSV/JSON格式便于后续分析

三、替代数据获取途径

如果爬取该网站困难,可选择以下合规的公开数据源:

  • 德国联邦统计局:官方发布的统计数据包含邮编对应的人口、区域等结构化信息,可通过其数据门户查询下载
  • 开源数据集平台:部分开源社区整理了标准化的德国邮编人口数据集,涵盖邮编、城市、人口数量及性别分布等字段,可直接获取
  • 地理信息服务:部分专注于地理数据的公开服务提供绑定人口数据的邮编查询接口,可通过合规调用获取所需信息

内容的提问来源于stack exchange,提问作者sdave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 14:25:11