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 は、形式のプロキシのリストです123.123.123.123:1234\n。奇妙なことに、2 つの変数PROXY_HOSTをハードコーディングしPROXY_PORTてプロキシを使用する場合、このようなファイルから読み込もうとすると、

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

プロキシ設定は無視されます。2 つの変数を出力すると、それらは正しいですが使用されません。

IPとポートをハードコードすることと、ファイル/リストから読み取ることの違いは何ですか。

4

2 に答える 2

1

readlines各行の行末文字を保持します。ポートがに設定されている場合、これによりプロキシ設定がサイレントに失敗する可能性があります"1234\n"

于 2012-08-31T14:35:34.813 に答える
1

これは、適切にデバッグする方法の問題です。proxiesこのリストがハードコードさproxiesれている場合と、ファイルから読み取る場合を正確に見てください。を使用して両方の変数を印刷するのが最善repr()です。違いがわかります。解決策は非常に簡単です。ファイルからポートを読み取った後、それはまだ文字列であり、整数に変換する必要があります。ハードコードするときは、最初に整数として定義します。

于 2012-08-31T15:39:54.117 に答える