我试图用python创建一个匿名者,我不确定要使用哪个“循环”(因为你可以告诉我对这一切仍然很新)
到目前为止,我有这个:import mechanize
import cookielib
br=mechanize.Browser()
br.set_handle_robots(False)
proxylist=open("/home/xyz/proxylist.txt","r+")
ualist=open=("/home/xyz/ualist.txt","r+")
def changeuseragent(useragent):
br.addheaders=[('User-agent',useragent)]
def addproxy(proxy):
br.set_proxies({"http":proxy})
def changecookie():
cookie_jar = cookielib.LWPCookieJar()
br.set_cookiejar(cookie_jar)
changeuseragent(useragent)
addproxy(proxy)
changecookie()
z=br.open("http://www.whatsmyuseragent.com")
print z.read()
在我有上面两个“打开文件”行之前,我有两行代理和UserAgent值,所以我删除了那些并打开了两个文件,我用每种类型的几个选项(每行是1个选项)
我想要的是编写一个循环,这样每次运行它时,它都会从列表中使用随机代理和useragent访问网站。
我遇到的主要问题是我不确定如何构建它,如果我应该使用while True
或if
或甚至try
。
TY!
答案 0 :(得分:2)
要获取文件行:
lines = open(path,"r").readlines()
要从中选择一个随机元素,比如一行:
import random #preferably at the top of the script
myline = random.choice(lines)
删除有害换行符和空格行:
cleanline = line.strip()
重复你的任务:
br=mechanize.Browser()
br.set_handle_robots(False)
def open_page(url,agent,proxy):
changeuseragent(agent.strip()) # pass br here, or move above lines out
addproxy(proxy.strip()) # into the global scope
changecookie()
return br.open(url)
# if script is executed, not imported. This line below is common magic.
if __name__=="__main__":
# TODO: open your files
somelines = file(path,"r").readlines()
#
running = True
while running:
# TODO: select a line
oneline = random.choice(lines)
secondline = random.choice(otherlines)
#
f = open_page(your_url,agentline,proxyline)
print f.read() #<or do whatever you wish
f.close() #<not necessary
running = raw_input("x and enter to exit: ").lower().startswith("x")
# And on it goes.
编辑:我添加了一些伪代码。您需要修改或多或少明显的行。
关于主题:上面的循环在交互式控制台脚本中非常常见。