基于robots.txt规则判断站点爬取权限及403错误含义咨询
robots.txt爬取权限判断
你提供的站点robots.txt规则非常明确:
- 对所有爬虫(
User-agent: *)开放根路径下所有页面的爬取权限(Allow: /),仅禁止爬取后缀为*.notfound.html的页面 - 你属于个人非商业学习用途,完全符合robots协议的许可范围,使用
requests+BeautifulSoup爬取除*.notfound.html之外的站点内容是合规的。
无请求头返回403的原因
这个状态码不等于网站禁止爬取,属于非常普遍的基础反爬校验逻辑:
- 绝大多数站点的服务端都会校验请求头的
User-Agent字段,缺少该字段、或者字段值为爬虫默认标识的请求会被直接拒绝,返回403状态码 - 你只需要在发起请求时补充正常浏览器的
User-Agent参数即可正常访问,示例代码如下:
import requests from bs4 import BeautifulSoup # 模拟正常Chrome浏览器的User-Agent headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } response = requests.get("目标页面URL", headers=headers) # 确认请求成功后再解析 if response.status_code == 200: soup = BeautifulSoup(response.text, "html.parser")
- 额外提示:即使站点允许爬取,也建议控制爬取频率,不要短时间发起大量请求给站点服务器造成额外负担,符合学习场景的低频率访问基本不会被拦截。
内容的提问来源于stack exchange,提问作者lilak0110
相关产品推荐
相关产品推荐

