我需要从网站上检索8000个答案用于研究目的(自动填写表格并提交8000次)。我编写了下面的脚本但是当我在20次提交python后停止运行它并且我无法得到我需要的东西。你能帮我找一下我的剧本的问题吗?
from mechanize import ParseResponse, urlopen, urljoin
import urllib2
from urllib2 import Request, urlopen, URLError
import mechanize
import time
URL = "url of the website"
br = mechanize.Browser() # Creates a browser
br.set_handle_robots(False) # ignore robots
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
def fetch(val):
br.open(URL) # Open the login page
br.select_form(nr=0) # Find the login form
br['subject']='question'
br['value'] =val
br.set_all_readonly(False)
resp = br.submit()
data = resp.read()
br.reload()
x=data.find("the answer is:")
if x!=-1:
ur=data[x:x+100]
print ur
val_list =val_list # This list is available and contains 8000 different values
for i in range(0,8000):
fetch(val_list[i])
答案 0 :(得分:0)
过去曾使用mechanize
来做类似数据抓取的事情,你几乎肯定会受到Erbureth提到的网站的限制。通常网站都有办法监控连接,以便过滤掉你正在尝试的事物的类型,并且有充分的理由。
暂时搁置一下你的剧本的目的可能是什么,并转向你的问题为什么不起作用:至少,我会在那里放一些延迟,所以你不是试图访问网站在如此短的时间内反复出现。在两次通话之间暂停几秒钟,也许它会起作用。 (虽然那时你必须让它运行几个小时。)