0

这是一个有点奇怪的问题,但我会尽我所能。我正在使用代理编写脚本,但我遇到了自动化部分脚本的问题,这很糟糕,因为它是我需要的所有内容的最后一部分,然后我就完成了。

示例:假设我有一个以这种格式存储在 .txt 文件中的200 个左右的代理列表:

110.138.183.60:8080
110.138.20.67:8080
110.138.208.116:8008
110.138.237.80:3128
110.138.248.17:8080
110.138.248.78:80
110.139.182.234:8080
ect ect ect...

该脚本的第一部分是我需要将它们随机化,因此只需将它们以不同的顺序混合在一起,但要确保它们都像现在一样在一行中结束。

将它们随机化后的第二部分,然后取前99个随机代理并将它们以这种格式移入一行,忽略第 99 个之后的任何代理。(以 | 分隔,开头和结尾都没有。)

110.138.183.60:8080|110.138.208.116:8008|110.138.237.80:3128|110.138.248.17:8080|110.138.248.78:80|110.139.182.234:8080|110.138.20.67:8080

第三部分是我需要这个新的代理行来编辑和替换文件中的一行。该行当前看起来像这样:

user_pref("extensions.proxytool.http_proxies", "129.59.26.40:8909|87.106.143.132:3128|85.17.121.205:9090|88.85.125.78:8080|80.82.150.82:8080");

在您看到该行中的代理的地方,我需要用我们刚刚创建的新一批代理替换它们。

最终结果看起来像这样:

...
user_pref("extensions.proxytool.clear_cookies_on_new_window", true);
user_pref("extensions.proxytool.firstrun", false);
user_pref("extensions.proxytool.http_proxies", "110.138.183.60:8080|110.138.208.116:8008|110.138.237.80:3128|110.138.248.17:8080|110.138.248.78:80|110.139.182.234:8080|110.138.20.67:8080");
user_pref("extensions.proxytool.proxy_type", "http");
user_pref("extensions.proxytool.referer", "default");
...

如果我不是绝望的话,我不会问这么多,在完成它之前,我真的是我项目的最后一根头发。任何帮助是极大的赞赏!提前致谢!

编辑:脚本完成。感谢Zack Bloom的帮助!我对 python 脚本的工作方式有点懒惰,而是创建了一个带有空代理行的默认 prefs 文件,因此在 python 脚本之外,将默认 prefs 文件复制到我的程序中,然后 python 脚本执行这很神奇,用新编译的列表替换了“代理到这里”这一行。再次感谢扎克!

from random import sample

with open("C:/Users/USERACCOUNT/test/today.txt") as proxy_file:
    proxies = [proxy.strip() for proxy in proxy_file.readlines()]

    proxies = sample(proxies, min(len(proxies), 99))

    proxy_str = "|".join(proxies)

import fileinput
import sys

def replaceAll(file,searchExp,replaceExp):
    for line in fileinput.input(file, inplace=1):
        if searchExp in line:
            line = line.replace(searchExp,replaceExp)
        sys.stdout.write(line)

replaceAll('C:/Users/USERACCOUNT/test/prefs.js','proxiesgohere',proxy_str)
4

1 回答 1

1

创建列表很简单:

from random import sample

with open("proxy_list.txt") as proxy_file:
    proxies = [proxy.strip() for proxy in proxy_file.readlines()]

    proxies = sample(proxies, min(len(proxies), 99))

    proxy_str = "|".join(proxies)

然后你必须使用一种模板语言(在标准库中有一个:http: //docs.python.org/library/string.html#template-strings)来创建包含字符串的输出文件。

于 2011-10-15T04:07:08.673 回答