2015-04-01 156 views
0

我试图打开URL与机械化但不能打开并关闭它马上 我希望它打开URL,然后等待7分钟然后关闭该网址。使用机械化与Python

我想要做的事:

import mechanize 
import cookielib 
import time 


url='http://google.com/' 
op = mechanize.Browser() 

cj = cookielib.LWPCookieJar() 
op.set_handle_robots(False) 
op.set_handle_equiv(True) 
op.set_handle_referer(True) 
op.set_handle_redirect(True) 
op.set_cookiejar(cj) 
op.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=7) 

op.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 

op.open(url) 
time.sleep(7) 

print op.geturl() 

,但没有奏效。我该怎么做?

thnx。

+1

睡眠需要的秒数睡,而不是几分钟。 – 2015-04-01 22:59:38

+0

@ap好吧,但它没有与机械化工作 – deounix 2015-04-01 23:01:26

+1

那么我不认为我理解这个问题。使用'time.sleep(420)'睡7分钟。如果不是那样,什么不行?它以什么方式专门用于机械化? – 2015-04-01 23:03:47

回答

2

mechanize是一个用于执行http请求/响应的工具,只有像urllib那样能够像浏览器一样运行多一点的能力。

HTTP是(大部分)无状态 - 你不抱网页在这个意义上开放你似乎在思考。连接在“打开”返回时关闭。

您检索谷歌的主页,获取物体从机械化回来表示响应,等待7秒,然后要求附于响应的URL。

我并运行您的代码,并在该范围内它的工作原理。

set_handle_refreshHTTPRefreshProcessor当网页有一个“刷新”元,导致它在一段时间后重新加载时,就会发挥作用。我相信你给出的参数(7秒,而不是分钟)是机械化在刷新之间兑现的最大时间。

但在任何情况下,谷歌的网页不刷新,我不认为,所以这并不做任何事情在那里。

您可以查看HTTP Keep-Alive/Persistent连接以查看是否有要执行的操作,但即使保持连接状态也不是真正从客户端POV打开的页面。