【问题标题】:Python requests module does not work for url with pathPython 请求模块不适用于带有路径的 url
【发布时间】:2016-02-03 23:10:50
【问题描述】:

我的 Python 版本是 2.7,在 Ubuntu 机器上运行。我正在尝试使用请求通过代理服务器获取某些页面,它不适用于具有完整路径的 url。这是一个展示这个问题的例子,

In [30]: proxies
Out[30]: {'http': 'http://webproxyserver.info:80'}

In [31]: url = 'http://api.mongodb.org/'

In [32]: r = requests.get(url,proxies = proxies)

In [33]: r.status_code
Out[33]: 200

In [34]: url_1 = 'http://api.mongodb.org/python'

In [35]: r = requests.get(url_1,proxies = proxies)

In [36]: r.status_code
Out[36]: 404

我不确定这是否是代理的问题?或者我的 Python 代码有问题。它看起来像是主域的唯一代理词(没有任何路径)。

感谢您提供任何信息。

--- 更新于 05/11 我刚刚意识到代理服务器根本不起作用。我从 proxy4free 获得了代理服务器,看起来它们不是真正的代理服务器,它们是一些像浏览器一样工作的网站。

我已经尝试了另一个真正的代理服务器,并且代码都很好执行。感谢您提供的所有信息。

【问题讨论】:

  • 代码在我看来没问题

标签: python proxy python-requests


【解决方案1】:

代理服务器好像有问题,我认为它无法处理http://api.mongodb.org/python抛出的302

$export http_proxy=                                                      
$curl -s -w '%{http_code}\n' 'http://api.mongodb.org/' -o /dev/null      
200
$curl -s -w '%{http_code}\n' 'http://api.mongodb.org/python' -o /dev/null
302
$export http_proxy='http://webproxyserver.info:80'                       
$curl -s -w '%{http_code}\n' 'http://api.mongodb.org/' -o /dev/null      
200
$curl -s -w '%{http_code}\n' 'http://api.mongodb.org/python' -o /dev/null
404

【讨论】:

    【解决方案2】:

    尽管有其名称,但 webproxyserver.info 并未在该位置运行 http 代理。如果您检查r.text,您会发现代理不适用于任何地址,无论有无路径。

    【讨论】:

    • 是的,你是对的。代理服务器 URL 根本不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 2015-12-01
    • 1970-01-01
    • 2021-03-04
    • 2022-01-19
    • 2021-10-03
    相关资源
    最近更新 更多