使用Python Requests爬取doherty.jobs页面返回503错误如何解决
解决方法
你遇到的503错误是目标站点启用了Cloudflare的JS验证防护,requests库无法执行页面动态JS完成验证,所以仅修改UA无效,可尝试以下方案:
方案1:使用cloudscraper库绕过验证
cloudscraper专门针对Cloudflare防护做了适配,无需启动完整浏览器,资源占用更低,Colab环境可直接运行:
- 安装依赖
!pip install cloudscraper
- 请求示例代码
import cloudscraper # 初始化模拟Chrome浏览器的scraper实例 scraper = cloudscraper.create_scraper( browser={'browser': 'chrome', 'platform': 'windows', 'mobile': False} ) target_url = 'https://www.doherty.jobs/jobs/search?q=&l=&lat=&long=&d=' response = scraper.get(target_url) # 打印状态码和页面内容确认 print(response.status_code) print(response.text)
方案2:使用无头浏览器模拟真实访问
如果cloudscraper仍然无法绕过,可以用undetected-chromedriver启动完整的无头Chrome环境,完全模拟真人浏览器行为,几乎可以绕过所有前端反爬:
- 安装依赖
!pip install undetected-chromedriver
- 请求示例代码
import undetected_chromedriver as uc from time import sleep # 配置无头参数 chrome_options = uc.ChromeOptions() chrome_options.add_argument('--headless') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') chrome_options.add_argument('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') driver = uc.Chrome(options=chrome_options) target_url = 'https://www.doherty.jobs/jobs/search?q=&l=&lat=&long=&d=' driver.get(target_url) # 等待页面加载完成 sleep(2) # 获取页面HTML源码 page_html = driver.page_source print(page_html) # 关闭浏览器 driver.quit()
后续分页爬取注意事项
- 每次请求间隔2~3秒,避免触发站点频率限制
- 翻页时可以先通过浏览器开发者工具观察分页参数规则,直接拼接URL请求,或者模拟点击分页按钮获取下一页内容
- 如果出现访问失败,可以更换请求头或者间隔更长时间后重试
内容的提问来源于stack exchange,提问作者ruscias
相关产品推荐
相关产品推荐

