V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xdcr
V2EX  ›  Python

requests 抓取网页,在 python shell 运行正常,文件执行报错,求原因

  •  
  •   xdcr · 2015-04-24 11:04:16 +08:00 · 12066 次点击
    这是一个创建于 3494 天前的主题,其中的信息可能已经有所发展或是发生改变。
    python shell运行正常

    import requests
    r = requests.get('https://www.google.com')
    r.content

    存为文件python google.py运行报错

    r = requests.get('https://www.google.com')
    File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 60, in get
    return request('get', url, **kwargs)
    File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 49, in request
    return session.request(method=method, url=url, **kwargs)
    File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 457, in request
    resp = self.send(prep, **send_kwargs)
    File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 569, in send
    r = adapter.send(request, **kwargs)
    File "/usr/local/lib/python2.7/site-packages/requests/adapters.py", line 362, in send
    timeout=timeout
    File "/usr/local/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 516, in urlopen
    body=body, headers=headers)
    File "/usr/local/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 304, in _make_request
    self._validate_conn(conn)
    File "/usr/local/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 722, in _validate_conn
    conn.connect()
    File "/usr/local/lib/python2.7/site-packages/requests/packages/urllib3/connection.py", line 169, in connect
    self.sock = ssl.wrap_socket(conn, self.key_file, self.cert_file)
    AttributeError: 'NoneType' object has no attribute 'wrap_socket'
    16 条回复    2015-05-13 14:54:00 +08:00
    aru
        1
    aru  
       2015-04-24 11:10:02 +08:00
    也许你的系统变量里面设了代理?
    换个网站试试,比如 www.intel.com
    xdcr
        2
    xdcr  
    OP
       2015-04-24 11:20:36 +08:00
    @aru 代理在路由,系统没设置。
    http的没问题,只要是https就不行。
    xia0chun
        3
    xia0chun  
       2015-04-24 11:29:44 +08:00
    你的requests版本是多少?
    升级一下试试
    sty
        4
    sty  
       2015-04-24 11:29:51 +08:00
    http明文,https加密
    aru
        5
    aru  
       2015-04-24 11:41:10 +08:00
    r = requests.get('https://www.google.com',verify=False)

    也许是证书验证问题,你试试上面的代码
    xdcr
        6
    xdcr  
    OP
       2015-04-24 11:46:00 +08:00
    @xia0chun 2.4.3


    @sty 我搞不懂为什么python shell正常,文件就是不行
    xdcr
        7
    xdcr  
    OP
       2015-04-24 11:47:58 +08:00
    @aru 试过,一样

    感觉和ssl相关的库的问题
    xdcr
        8
    xdcr  
    OP
       2015-04-24 12:23:55 +08:00
    @xia0chun 换2.6.2报错requests.exceptions.SSLError: Can't connect to HTTPS URL because the SSL module is not available.
    在python shell依然正常
    xia0chun
        9
    xia0chun  
       2015-04-24 13:52:20 +08:00
    @xdcr 你降级到2.2.1试试,这是我感觉最好用的一个版本
    sirgod
        10
    sirgod  
       2015-04-24 18:37:15 +08:00
    楼主试试import ssl能行吗?还有你机器上装了几个python?
    xdcr
        11
    xdcr  
    OP
       2015-04-24 18:54:56 +08:00
    @xia0chun 一样问题


    @sirgod 试过,也不行。 py2.7 和py3.4
    jackyspy
        12
    jackyspy  
       2015-04-25 15:50:45 +08:00
    print os.environ看下环境变量是否一致,python用完整路径确保同一版本。
    文件中import ssl; print ssl看看引用路径是否相同
    sirgod
        13
    sirgod  
       2015-04-25 19:20:19 +08:00
    @xdcr 有可能你的python shell跟从文件运行用的不是同一个解释器,其中的一个找不到ssl库,要么是没正确安装要么就是环境变量没设置正确
    xdcr
        14
    xdcr  
    OP
       2015-04-27 09:39:03 +08:00
    @jackyspy
    @sirgod
    多谢,确实是引用了一个错误的ssl文件
    peterkai
        15
    peterkai  
       2015-05-11 15:55:09 +08:00   ❤️ 1
    @xdcr
    这是怎么看出来的
    我跟你遇到了相同的问题
    求解决思路 谢谢!!
    xdcr
        16
    xdcr  
    OP
       2015-05-13 14:54:00 +08:00
    @peterkai 按楼上的import ssl; print ssl,会提示引用的ssl文件路径,看在哪里引用了错误的文件
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1181 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 23:50 · PVG 07:50 · LAX 15:50 · JFK 18:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.