mechanize.Browser 和 mechanize.UserAgentBase 实现了 Urllib2.OpenerDirctor 的接口 可以打开包括http在内的所有 url 链接 mechanize.UserAgentBase 提供简单的客户端代理的动态配置功能,如:协议,cookie, 重定向,机器人限制, 而不需要每次都创建一个新的 OpenerDirector 对象 简单的表单填写 方便的链接转换并且跳转 浏览器历史操作( .back() 和 .reload() 操作) 请求头中的 referer 会被合适地添加 (可选的操作) 自动遵守 机器人文件(robots.txt) 自动操作 http标题信息 (HTTP-Equiv) 看了以上的介绍,你大概清楚了 mechanize 的用途了吧。 其实这样的插件对于需要 javascript 操作,或者 js 相关的功能的网页是无能为力的。但是,我们可以查看js代码后,模拟相关的业务逻辑,然后再提交信息。 下面是mechanize的操作样例 import re import mechanize br = mechanize.Browser() response = br.open("http://www.example.com/") print response.read() # 打印网页的内容 # 访问符合指定的链接地址正则表达式的链接,且序号是第2个 response1 = br.follow_link(text_regex=r"cheese\s*shop", nr=1) assert br.viewing_html() print br.title() print response1.geturl() print response1.info() # headers print response1.read() # body # 浏览器选中 name 为 order 的表单 br.select_form(name="order") # 填充表单信息 br["cheeses"] = ["mozzarella", "caerphilly"] # (the method here is __setitem__) # 提交当前选定的表单。 浏览器在当前浏览对象调用了 .close() 的方法, 所以关闭了响应。 response2 = br.submit() # 打印当前的表单 (请使用 br.submit() ,而不是 response2.submit()) print br.form response3 = br.back() # back to cheese shop (same data as response1) # 历史记录机制返回缓存的response对象 # 我们仍然可以使用这个response,虽然他已经关闭了 response3.get_data() # 像在 read() 后使用的 .seek(0)方法 response4 = br.reload() # 从服务器端重新获取 for form in br.forms(): print form # .links 对象 接受 .follow() 和 .find_link() 对象的关键字参数 for link in br.links(url_regex="python.org"): print link br.follow_link(link) # 接受 link对象 或者 参数列表 br.back()复制代码 当然,在某些情况下,需要分析 html 的内容,并抓取某些数据,靠 mechanize 就不够了,这时候有没有办法呢?聪明的朋友一定已经想到了 BeautifulSoup ,或者 PyQuery 了,呵呵。不明白的朋友,可以点击链接去看看哦。 最后,奉上 mechanize的文档 ,希望对大家有帮助。http://wwwsearch.sourceforge.net/mechanize/
mechanize 是 pthon 的并且可编程的 浏览器插件,
最新推荐文章于 2023-01-05 14:45:36 发布