Python请求代理错误'无法解析'

时间:2017-04-20 17:34:00

标签: python python-requests

我试图使用代理列表来抓取页面。 这个小问题让我疯狂。当我直接输入代理时,它可以工作:

proxies = {
            'http': 'http://10.0.1.1:8080',
            'https': 'http://10.0.1.1:8080'
        }

但是当我使用像

这样的东西时
http_proxy =  'http://'+proxy
https_proxy = 'https://'+proxy



    proxies = {
            'http': http_proxy,
            'https': https_proxy,
        }
  

requests.packages.urllib3.exceptions.LocationParseError:失败   解析:10.0.1.1:8080

我收到此错误。这绝对没有意义。

编辑:我刚刚意识到它可能是因为每个代理后的换行符我在服务器上托管了proxylist.txt所以现在我需要找到如何在每个代理之后摆脱换行,我尝试像代理这样的东西。剥离(' \ n'),但这不起作用

4 个答案:

答案 0 :(得分:1)

使用后,始终检查.split可能有额外的字符我使用

修复了我的项目
splitlines()

答案 1 :(得分:1)

我尝试了带有2行的proxylist.txt 10.0.1.1:8080
10.0.1.1:8181

并在代码下面执行,

with open('proxylist.txt','r') as reader :
    for line in reader :
        proxy = line.split('\n', 1)[0]
        http_proxy =  'http://'+proxy
        https_proxy = 'https://'+proxy

        proxies = {
            'http': http_proxy,
            'https': https_proxy,
        }

        print proxies

按预期获得输出,
{' http':' http://10.0.1.1:8080',' https':' https://10.0.1.1:8080'}
{' http':' http://10.0.1.1:8181',' https':' https://10.0.1.1:8181'}

答案 2 :(得分:0)

由于这个问题,我疯了。

尝试执行以下操作:

def chomp(x):
    if x.endswith("\r\n"):
        return x[:-2]
    if x.endswith("\n") or x.endswith("\r"):
        return x[:-1]
    return x

    http_proxy =  'http://' + chomp(proxy)
    https_proxy = 'https://' + chomp(proxy)

    proxies = {
            'http': http_proxy,
            'https': https_proxy,
        }

它帮助解决了我的问题。

答案 3 :(得分:0)

另一个转储选项是代理本身不再好。我尝试使用一个代理运行相同的代码,并收到此错误。上面的解决方案都没有帮助我(实际上,我相信他们在较新的版本https://github.com/kennethreitz/requests/issues/4613中解决了此问题)。但是,当我尝试使用良好的代理服务器时,却没有遇到此类问题