博客
关于我
Python "HTTP Error 403: Forbidden"
阅读量:799 次
发布时间:2023-03-05

本文共 782 字,大约阅读时间需要 2 分钟。

问题分析:

使用urllib.request.urlopen直接打开URL时,服务器可能会拒绝请求,返回403 Forbidden错误。原因在于,urllib请求缺乏User-Agent信息,服务器无法确认请求的真实性和来源,容易误判为爬虫行为。

解决方法:

在请求头中添加User-Agent信息,使服务器认为请求来自真实的浏览器,从而正常处理请求。

步骤说明:

  • 创建请求头字典:添加User-Agent字段,设置为常见的浏览器信息。
  • 构造请求对象:使用urllib.request.Request,传入URL和请求头。
  • 发送请求并读取内容:用构造好的请求对象调用urlopen,获取页面内容。
  • 优化后的代码示例:

    import urllib.requestdef set_IPlsit():    url = 'https://www.whatismyip.com/'    headers = {        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'    }    req = urllib.request.Request(url=url, headers=headers)    response = urllib.request.urlopen(req)    html = response.read().decode('utf-8')    return html# 调用函数获取IP地址信息ip = set_IPlsit()

    注意事项:

    • 确保URL正确无误。
    • 不要频繁请求同一URL,避免触发反爬虫机制。
    • 遵守网站的robots.txt规则,避免不当行为。
    • 如果网站要求登录或验证,需要使用更复杂的认证方法。

    转载地址:http://gnafk.baihongyu.com/

    你可能感兴趣的文章
    Python - 正则表达式在括号之间获取数字
    查看>>
    Python - 正则表达式在括号之间获取数字
    查看>>
    Python - 正则表达式在括号之间获取数字
    查看>>
    Python - 类 __hash__ 方法和集合
    查看>>
    Python - 轻松将文本文件内容转换为字典值/键
    查看>>
    Python - 递归和列表
    查看>>
    python -- 小数据池 is和 == 再谈编码
    查看>>
    Python -- 算法实现
    查看>>
    python --- 元组(tuple)
    查看>>
    python --- 列表(list)
    查看>>
    python --- 协程
    查看>>
    python --- 字符串 str
    查看>>
    python ----元组方法以及修改细节
    查看>>
    python ----字典dict
    查看>>
    python / 解决 pyinstaller 打包后运行时提示找不到模块的问题
    查看>>
    Python 10 个习惯用法,短平快第一期
    查看>>
    python 29day--异常处理及socket简介
    查看>>
    Python 3 中未定义名称“xrange“
    查看>>
    python进阶(5):魔术方法篇(1)
    查看>>
    Python 3 范围与 Python 2 范围
    查看>>