You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python和Jupyter Notebook爬取网页时遭遇403错误求解决

解决爬取足球统计数据时的403错误方案
  • 伪装请求头,模拟真实浏览器
    多数网站会校验请求头里的User-Agent,若请求用了默认标识或未携带,极易被拦截。给session补上完整请求头试试:

    import requests
    
    session = requests.Session()
    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',
        'Referer': '目标网站的首页URL',  # 比如爬取某足球数据页时,将Referer设为该网站首页
        'Accept-Language': 'zh-CN,zh;q=0.9'
    }
    session.headers.update(headers)
    response = session.get('目标数据URL')
    print(response.status_code)
    

    注意把User-Agent换成当前主流浏览器的标识,Referer要对应目标网站域名。

  • 使用代理IP规避IP封禁
    若你的IP已被网站拉黑,更换IP即可解决。可使用免费代理池,或付费代理服务,配置到session中:

    proxies = {
        'http': 'http://代理IP:端口',
        'https': 'https://代理IP:端口'
    }
    response = session.get('目标数据URL', proxies=proxies)
    

    免费代理稳定性差,若需频繁爬取,建议选用付费代理更靠谱。

  • 添加请求延迟,避免高频访问
    短时间内大量请求会触发反爬机制,给每个请求添加随机延迟:

    import time
    import random
    
    # 请求前随机延迟1-3秒
    time.sleep(random.uniform(1, 3))
    response = session.get('目标数据URL')
    
  • 模拟真实浏览器行为(针对JS渲染或强反爬)
    若网站用JS动态加载数据或有严格反爬(如验证浏览器指纹),纯HTTP库requests可能无法应对,试试用Selenium或Playwright模拟真实浏览器操作:
    以Selenium为例:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    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 = webdriver.Chrome(options=options)
    driver.get('目标数据URL')
    page_source = driver.page_source
    # 后续解析page_source获取数据
    driver.quit()
    
  • 检查网站的robots.txt规则
    先查看目标网站的robots.txt(格式如https://目标域名/robots.txt),确认要爬取的内容是否被禁止抓取,若被禁止,需调整爬取范围,或联系网站获取授权。

内容的提问来源于stack exchange,提问作者ArulMK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:35:04