Mechanize模拟浏览器

Mechanize模拟浏览器简介 Mechanize 是一个 Python 模块 用于模拟浏览器 该模块能够处理网页登录所要求的用户名 密码 验证码 该模块的具体用法如下使用方法一 importmechan 导入模块 br mechanize Browser br set handle equiv True br set handle redirect True br set handle referer T

简介:

Mechanize 是一个 Python 模块,用于模拟浏览器。由于考虑到爬虫所需要的是数据,所以该模块完全可以绕过验证码,直接使用 Cookie 登录就可以了。但是 Mechanize 模块使用 Cookie 登录,Cookie 的生存期较短,而且该模块也不支持 JavaScript。总体来说,该模块在面对验证码问题,算是个非常好的办法,应推荐使用。


该模块的具体用法如下

使用方法一

import mechanize #导入模块 br = mechanize.Browser() br.set_handle_equiv(True) br.set_handle_redirect(True) br.set_handle_referer(True) br.set_handle_robots(False) br.set_handle_gzip(False) br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) header = [ ('Cookie', 'PHPSESSID=11eb50f5bec637ecdaf1e02ea; ECS_ID=ef9ff8c13f0c4215c7935da16a7b206ca03c44fa; bdshare_firstime=29; Hm_lvt_6424edc88ffcfadb6f51be89f=,; Hm_lpvt_6424edc88ffcfadb6f51be89f='), ('User-Agent', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/55.0.2883.87 Chrome/55.0.2883.87 Safari/537.36') ] #获取用户登录百度后的Request Headers里面的Cookie值 和 User-Agent, #其中,Cookie含有账号和密码信息,User-Agent是说明该请求是浏览器请求的,不是网络爬虫。 #需要注意的是,这些Cookie和User-Agent值,根据自己的情况去设置 br.addheaders = getHeaders(header) #以上都是初始化操作,下面正式操作 br.open('https://www.baidu.com') #打开百度 result = br.response().read() #输出该网页的代码内容, #若接触过BeautifulSoup,可以将获得的 result 网页内容,用于以下方法处理: soup = BeautifulSoup(result,'lxml')#剩下的,可以用 BeautifulSoup的知识去解决了 #在安装好必要的模块后,以上代码可以直接拿过来使用 

使用方法二

Mechanize模拟浏览器还有其他一些操作,如下

for form in br.forms(): print(form)

输出结果如下:

<f GET https://www.baidu.com/s application/x-www-form-urlencoded <HiddenControl(ie=utf-8) (readonly)> <HiddenControl(f=8) (readonly)> <HiddenControl(rsv_bp=1) (readonly)> <HiddenControl(rsv_idx=1) (readonly)> <HiddenControl(ch=) (readonly)> <HiddenControl(tn=baidu) (readonly)> <HiddenControl(bar=) (readonly)> <TextControl(wd=)> <SubmitControl(<None>=百度一下) (readonly)> <HiddenControl(rn=) (readonly)> <HiddenControl(oq=) (readonly)> <HiddenControl(rsv_pq=8e85ae) (readonly)> <HiddenControl(rsv_t=e2292vaXa6IOboaARHGB3ajcHkUM/7/UPf2NufNR+ninqHO+83EQ8YY76sg) (readonly)> <HiddenControl(rqlang=cn) (readonly)>> 

从输出的结果可以看出,其中< HiddenControl(f=8) (readonly) >是以 名字为 f 的框架(有时候框架没有名字,那就只能使用它们的顺序来选择);输入文字的位置为文本输入框 < TextControl(wd=) >。选择框架,在框架内输入数据后提交数据。以搜索“Python 网络爬虫” 为例,

br.select_form(name='f') br.form['wd'] = 'Python 网络爬虫' br.submit() # 提交 result = br.response().read() #输出结果,可以将结果用BeautifulSoup来处理,即soup = BeautifulSoup(result,'lxml'),然后提取想要的数据

使用方法三

查看返回页面的链接,例如:

for link in br.links(): print("%s : %s" %(link.url,link.text))

使用方法四

使用mechanize浏览器打开指定链接,例如:

newLink = br.click_link(text='自己动手写网络爬虫') br.open(newLink)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202291.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午7:28
下一篇 2026年3月20日 上午7:29


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号