Python请求代理错误“无法分析”

2024-06-07 12:44:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着用一个代理列表来创建一个页面。 这个小问题很容易使我发疯。当我像这样直接输入代理时,它可以工作:

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: Failed to parse: 10.0.1.1:8080

我知道这个错误。这完全没有道理。

编辑:我刚刚意识到这可能是因为在每个代理之后有一个换行符,我在服务器上托管了proxylist.txt,所以现在我需要找出如何在每个代理之后去掉换行符,我尝试了proxy.strip('\n')之类的东西,但这也不起作用


Tags: tohttpshttp代理列表parsepackages页面
3条回答

我试过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'}

因为那个问题我都快疯了。

尝试这样做:

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,
        }

它帮助我解决了问题。

使用后总是检查。拆分可能有额外的字符,我使用

splitlines()

相关问题 更多 >

    热门问题