使用Python无法导入countrymeters.info网站世界人口数据求助
问题描述
尝试使用Python从站点https://countrymeters.info/en导入世界人口数据时,始终无法完成数据拉取操作,对应使用的代码截图如下:
失败原因
该站点配置了基础反爬规则,直接使用默认参数发起requests请求时,请求头里没有携带浏览器标识User-Agent,会被站点识别为爬虫程序,直接返回403禁止访问的响应,无法拿到正常的页面内容,自然提取不到人口数据。
修复方案
- 先安装所需依赖:执行命令
pip install requests beautifulsoup4 - 发起请求时添加模拟浏览器的请求头,绕过基础反爬校验
- 页面返回成功后,定位人口数据对应的DOM节点提取内容即可
可直接运行的参考代码:
import requests from bs4 import BeautifulSoup target_url = "https://countrymeters.info/en" # 携带浏览器标识,模拟正常用户访问 request_headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36" } resp = requests.get(target_url, headers=request_headers) # 主动抛出请求异常,方便排查问题 resp.raise_for_status() # 自动识别页面编码,避免乱码 resp.encoding = resp.apparent_encoding # 解析页面 page_soup = BeautifulSoup(resp.text, "html.parser") # 提取世界人口数值 current_world_population = page_soup.select_one("#cp1").get_text(strip=True) print(f"获取到的当前世界人口:{current_world_population}")
注意:不要对站点发起高频连续请求,容易被永久封禁IP,必要时可以在请求间加1~3秒的随机间隔。
内容的提问来源于stack exchange,提问作者Saumen Mallik
相关产品推荐
相关产品推荐

