0

看到这个代码

PROXY_HOST, PROXY_PORT = choice(proxies).rstrip().split(":")

fp = webdriver.FirefoxProfile()

# Direct = 0, Manual = 1, PAC = 2, AUTODETECT = 4, SYSTEM = 5
fp.set_preference("network.proxy.type", 1)

fp.set_preference("network.proxy.http", PROXY_HOST)
fp.set_preference("network.proxy.http_port", PROXY_PORT)
fp.set_preference("network.proxy.ftp", PROXY_HOST)
fp.set_preference("network.proxy.ftp_port", PROXY_PORT)
fp.set_preference("network.proxy.ssl", PROXY_HOST)
fp.set_preference("network.proxy.ssl_port", PROXY_PORT)

proxies 是 form 中的代理列表123.123.123.123:1234\n。奇怪的是,如果我对这两个变量进行硬编码PROXY_HOST并且PROXY_PORT它将使用代理,如果我尝试从我喜欢的文件中读取它

with open("proxies.txt") as f:
    proxies = f.readlines()

代理设置被忽略。如果我打印这两个变量,它们是正确的但未使用。

那么有什么我看不到的吗,硬编码 ip 和端口或从文件/列表中读取它有什么不同。

4

2 回答 2

1

readlines保留每一行的行尾字符。如果端口设置为,例如,这可能会导致代理设置静默失败"1234\n"

于 2012-08-31T14:35:34.813 回答
1

这是一个如何正确调试问题。看看proxies这个列表是硬编码proxies的还是你从文件中读取的。最好的方法是使用 . 打印两个变量repr()。你会看到不同。解决方法很简单:从文件中读取端口后,仍然是字符串,需要转换为整数。当你硬编码它时,你首先将它定义为一个整数。

于 2012-08-31T15:39:54.117 回答