与python一起使用mechanize

时间:2015-04-01 22:56:06

标签: python mechanize mechanize-python

我正在尝试用机械打开网址,但不是只打开它并立即关闭它 我希望它打开网址,然后等待7分钟,然后关闭网址。

我正在尝试做什么:

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 个答案:

答案 0 :(得分:2)

mechanize是一个用于执行http请求/响应的工具,只有比urllib更像是浏览器的能力。

http(在大多数情况下)是无状态的 - 你似乎没有想到会打开一个网页。连接在“open”返回时关闭。

您正在检索Google的主页,从代表该响应的机械化中获取一个对象,等待7秒,然后请求附加到响应的网址。

我确实运行了你的代码,并且在这种程度上它可以运行。

set_handle_refreshHTTPRefreshProcessor会在网页上有一个“刷新”元素时发挥作用,导致它在一定时间后重新加载。我相信你提供的参数(7秒,而不是分钟,再次)是机械化在刷新之间兑现的最长时间。

但无论如何,谷歌的主页不刷新,我不认为,所以这里没有做任何事情。

你可以查看HTTP Keep-Alive / Persistent连接,看看是否有什么可以做你想做的事情,尽管即使保持活动连接也不是真正从客户端的POV保持打开的页面。