将机械化与 python 结合使用

Use mechanize with python

我正在尝试使用 mechanize 打开 url,但不只是打开它并立即关闭它 我希望它打开 url 然后等待 7 分钟然后关闭 url.

我想做什么:

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.

mechanize 是一个用于执行 http request/response 的工具,只是比 urllib.

这样的工具更像浏览器

http(在大多数情况下)是无状态的——您不会像您想象的那样让网页处于打开状态。 "open" 返回时连接已关闭。

您正在检索 Google 的主页,从 mechanize 取回表示该响应的对象,等待 7 秒,然后请求附加到响应的 url。

我做了 运行 你的代码,并且在那个程度上它有效。

set_handle_refreshHTTPRefreshProcessor 会在网页有 "refresh" 元导致它在一定时间后重新加载时发挥作用。我相信您提供的参数(再次是 7 秒,而不是分钟)是机械化在刷新之间将遵守的最长时间。

但无论如何,Google 的主页不会刷新,我不认为,所以这在那里没有任何作用。

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