答辩超人sbcan 2024-04-08 21:44 采纳率: 100%
浏览 5
已结题

python/小说/url

img


爬取URL文本状态码200,局部404啊咋整!浏览器访问显示完整文本,python进去就不行!

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2024-04-08 21:44
    关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    针对Python爬取URL文本状态码200,但局部出现404的情况,常见解决方案如下:

    1. 修改请求头信息:有些网站会对爬虫进行限制,因此可以通过修改请求头信息来模拟浏览器,以避免被封禁或限制。

    2. 添加Cookie:某些网站需要登录后才能访问,需要利用Cookie模拟登录状态。在Python中可以使用requests库的session对象来添加Cookie信息。

    3. 使用代理IP:通过使用代理IP轮流访问目标网站,以避免IP被封禁。

    4. 添加重试机制:在遇到局部404时,可以通过添加重试机制来重新访问该页面,以获取完整的文本信息。

    修改后的Python代码示例:

    import requests
    
    url = "https://example.com/page"
    
    # 设置请求头信息和Cookie
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
        "Cookie": "name=value"
    }
    
    # 添加代理IP
    proxies = {"http": "http://127.0.0.1:1080", "https": "https://127.0.0.1:1080"}
    
    # 添加重试机制
    retry_times = 3
    count = 0
    while count < retry_times:
        try:
            response = requests.get(url, headers=headers, proxies=proxies)
            if response.status_code == 200:
                # 提取文本信息
                text = response.text
                print(text)
                break
            elif response.status_code == 404:
                # 页面不存在,抛出异常
                raise requests.exceptions.RequestException
        except requests.exceptions.RequestException as e:
            count += 1
            if count >= retry_times:
                print("访问页面失败!")
    

    注意:以上解决方案仅供参考,具体需要根据实际情况选择合适的处理方式。另外,爬虫应当遵守网站的相关规定和法律法规。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月16日
  • 已采纳回答 4月8日
  • 创建了问题 4月8日