我怎样才能加快这个脚本的速度?

时间:2014-07-18 13:07:45

标签: python forms urllib2 form-submit

我需要从网站上检索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])

1 个答案:

答案 0 :(得分:0)

过去曾使用mechanize来做类似数据抓取的事情,你几乎肯定会受到Erbureth提到的网站的限制。通常网站都有办法监控连接,以便过滤掉你正在尝试的事物的类型,并且有充分的理由。

暂时搁置一下你的剧本的目的可能是什么,并转向你的问题为什么不起作用:至少,我会在那里放一些延迟,所以你不是试图访问网站在如此短的时间内反复出现。在两次通话之间暂停几秒钟,也许它会起作用。 (虽然那时你必须让它运行几个小时。)