使用requests模块爬取网页内容出现503 Server Error报错如何解决?
问题原因
requests发起请求时默认的User-Agent字段会明确标识自身为爬虫,目前绝大多数商业网站都配置了基础反爬策略,会直接拦截这类爬虫请求返回503错误,并非目标站点服务真的不可用,这也是你测试几乎所有URL都触发报错的核心原因。此外你代码里的请求URL存在http: //中间多余空格的语法问题,也会导致请求异常。
修复方案
- 优先添加模拟浏览器的请求头参数,覆盖默认的爬虫UA:
import requests # 以下为Chrome浏览器的UA示例,你也可以替换为自己本地浏览器的实际UA 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' } # 修正URL的多余空格,优先用https协议 response = requests.get('https://www.amazon.com/Automate-Boring-Stuff-Python-2nd/dp/1593279922/', headers=headers) response.raise_for_status() # 打印前500个字符验证请求成功 print(response.text[:500])
- 如果添加UA后仍偶尔触发503,可增加请求间隔避免高频访问触发站点频率限制:
import time import requests 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' } # 每次请求前等待2秒,可根据站点情况调整间隔时长 time.sleep(2) response = requests.get('https://www.amazon.com/Automate-Boring-Stuff-Python-2nd/dp/1593279922/', headers=headers) response.raise_for_status()
补充说明
如果爬取其他站点时也遇到同类503错误,优先检查是否携带了正常浏览器的User-Agent,部分安全策略更严格的站点还需要校验Cookie、Referer等请求头字段,按需补充对应参数即可。
内容的提问来源于stack exchange,提问作者Moses
相关产品推荐
相关产品推荐

