【问题标题】:mechanize open Url python机械化打开网址python
【发布时间】:2014-09-14 23:22:47
【问题描述】:
我正在尝试在 python 中使用 mechanize 打开一个 URL。代码执行时没有错误,但实际上什么也没发生。我错过了什么?另外,有没有办法设置浏览器?这是python 2.7。
import mechanize
url='http://www.google.com/'
op = mechanize.Browser() # use mecahnize's browser
op.set_handle_robots(False) #tell the webpage you're not a robot
op.open(url)
【问题讨论】:
标签:
python
python-2.7
mechanize
mechanize-python
【解决方案1】:
mechanize 不使用真正的浏览器 - 它是一种程序化网络浏览工具。
比如打开url后打印出页面标题:
>>> import mechanize
>>> url='http://www.google.com/'
>>> op = mechanize.Browser()
>>> op.set_handle_robots(False)
>>> op.open(url)
<response_seek_wrapper at 0x10247ebd8 whose wrapped object = <closeable_response at 0x102479a70 whose fp = <socket._fileobject object at 0x101903950>>>
>>> op.title()
'Google'
以下是后续,如何提交 Google 搜索表单:
import mechanize
url='http://www.google.com/'
op = mechanize.Browser()
op.set_handle_equiv(True)
op.set_handle_gzip(True)
op.set_handle_redirect(True)
op.set_handle_referer(True)
op.set_handle_robots(False)
# pretend you are a real browser
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)
op.select_form(nr=1)
op.form['q'] = 'Does mechanize use a real browser?'
op.submit()
print op.geturl()
打印:
http://www.google.com/search?hl=en&source=hp&q=Does+mechanize+use+a+real+browser%3F&btnG=Google+Search&gbv=1
【解决方案2】:
如果您的目标是在实际的 Web 浏览器中打开页面,我建议您使用 Python 2.7 中默认包含的 webbrowser 模块,而不是使用 mechanize。这个模块最简单的用法可以通过命令来演示
>>> import antigravity
在您的浏览器中打开http://xkcd.com/353/。这个笑话模块的代码是
import webbrowser
webbrowser.open("http://xkcd.com/353/")
有许多选项可用于自定义行为,包括打开可用的浏览器。您可以在webbrowser docs 中阅读这些内容。