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
Julio
V2EX  ›  Python

Python 新人,请教一个关于 Python http client 使用 socks5 代理的问题

  •  1
     
  •   Julio · 2018-02-06 10:14:05 +08:00 · 3212 次点击
    这是一个创建于 2512 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近刚学习 Python,想用 Python 写一个本地请求 http 的脚本,但是遇到了一个问题,也没有搜出来解决方案,希望各位 Python 大神指教啊。感谢! 代码如下:

    执行结果: <class 'str'> time: 560.594797 ms time: 1348.074913 ms

    疑问:为什么我在第 27 行就执行了一句: text = response.text 却耗费了 500 多毫秒啊?(把这句去掉,就是不调用 respon.text )就会很快。 这是什么原因啊?

    ps: 1.我直接访问 [百度] 的地址不加 socks 代理,是很快的。 2.直接写 socks5 代理,访问不了谷歌,所以写成了 socks5h 3.我用 nodejs 写,整个请求过程也才 700 多毫秒。

    望大神赐教啊!!! Python 新人!!不胜感激!!!

    9 条回复    2018-02-06 14:06:46 +08:00
    mianju
        1
    mianju  
       2018-02-06 10:29:27 +08:00
    用 PySocks 包可能会简单点
    shuizhengqi
        2
    shuizhengqi  
       2018-02-06 10:39:44 +08:00
    我没理解错的话,response,text 应该是解码 response 的文本内容,你是要读取内容?或者你用 BeautiFulSoup 试试
    Julio
        3
    Julio  
    OP
       2018-02-06 10:42:14 +08:00
    @mianju PySocks 确实会简单些,好像也有这个问题。
    Julio
        4
    Julio  
    OP
       2018-02-06 10:44:36 +08:00
    @shuizhengqi 是的,是要读取内容,BeautiFulSoup 也要传文本内容给他,也需要先获取内容。
    zhengxiaowai
        5
    zhengxiaowai  
       2018-02-06 10:52:35 +08:00   ❤️ 1
    对于 response.text 为什么慢,从源码中可以看出是做了一次 encoding,response 比较大时候确实是比较慢的。

    源码看 https://github.com/requests/requests/blob/master/requests/models.py#L830-L866

    对于代理,我也不是很清楚,我用的不多
    Julio
        6
    Julio  
    OP
       2018-02-06 11:01:16 +08:00
    @zhengxiaowai 非常感谢,你说的对,我看错了,并不是代理的问题,我之前可能是使用百度首页测试的,内容比较少,我换成百度搜索页面后,这个 encoding 的时间也需要 300-400 毫秒。感谢!
    ctro15547
        7
    ctro15547  
       2018-02-06 11:06:57 +08:00
    学习了!
    Xiaobaixiao
        8
    Xiaobaixiao  
       2018-02-06 11:44:17 +08:00
    最新的 Requests 使用本地 DNS 解析域名,自然无法访问谷歌,要想真的使用代理访问,降级到 2.12.0 吧。
    Julio
        9
    Julio  
    OP
       2018-02-06 14:06:46 +08:00
    @Xiaobaixiao 嗯,已经有了其他解决办法,感谢提醒!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3585 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 04:50 · PVG 12:50 · LAX 20:50 · JFK 23:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.