使用BeautifulSoup的WebScraping项目遇Error 403问题求助
解决WebScraping遇到403 Forbidden的方案
403 Forbidden是网站反爬机制的拦截结果,不属于实习训练里的“正常无法访问”情况,通过调整请求策略大多可以绕过,给你几个实操方案:
添加请求头模拟浏览器
网站会校验请求的User-Agent字段,默认爬虫请求无该字段或带有爬虫标识,会被直接拦截。你需要在请求中加入真实浏览器的User-Agent值,示例代码:headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } response = requests.get(url, headers=headers)真实的User-Agent可以从自己浏览器的开发者工具中复制获取。
补充完整请求头字段
部分网站还会校验Accept、Referer等字段,补充这些字段能提升请求的真实性,示例:headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Referer': 'https://www.proflowers.com/' }控制请求频率
短时间内频繁发起请求会触发反爬机制,可在每次请求后添加延迟:import time time.sleep(2) # 每次请求间隔2秒,可根据情况调整时长使用代理IP轮换
如果你的IP被网站封禁,可以尝试使用代理IP轮换请求,示例:proxies = { 'http': 'http://your-proxy-ip:port', 'https': 'https://your-proxy-ip:port' } response = requests.get(url, headers=headers, proxies=proxies)注意免费代理稳定性较差,实习阶段可选择靠谱的免费代理池或低成本付费代理。
实习训练中遇到这类反爬场景是很常见的,刚好可以练习应对反爬的技巧,只要调整请求策略大多能解决问题。
内容的提问来源于stack exchange,提问作者Mohamad Abdelsamad
相关产品推荐
相关产品推荐

