这是一个有点奇怪的问题,但我会尽我所能。我正在使用代理编写脚本,但我遇到了自动化部分脚本的问题,这很糟糕,因为它是我需要的所有内容的最后一部分,然后我就完成了。
示例:假设我有一个以这种格式存储在 .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)