python 显示模块名字_Python 爬虫:Mechanize 安装与测试

本文介绍了Python的Mechanize模块,用于模拟浏览器行为。详细讲解了Mechanize在Windows和Linux下的安装过程,并通过实例展示了如何使用Mechanize进行百度搜索和模拟登录光猫F460,帮助读者快速掌握Mechanize的基本操作。
摘要由CSDN通过智能技术生成

一次性付费进群,长期免费索取教程,没有付费教程。

进微信群回复公众号:微信群;QQ群:460500587

 教程列表  见微信公众号底部菜单 |   本文底部有推荐书籍 

1ddf93061cf64e66964e05170e4b1f03.png

微信公众号:计算机与网络安全

ID:Computer-network

Mechanize是Python的一个模块,用于模拟浏览器。Mechanize的易用性和实用性比较平衡,功能强大而又简单易用。

1、安装Mechanize模块

Mechanize在官网中给出了3种安装方法:easy_install安装、源码安装和git安装。实际安装时根据平台特性选择最简单的安装方法即可。

(1)Windows下安装Mechanize

在Windows中安装Python的第三方模块,最简单的方法莫过于pip了(前提条件是已经配置过pip源了,使用初始源会比较慢)。打开cmd.exe,执行命令:

pip install mechanize

执行结果如图1所示。

14712d905857a7abd9655d8c5601c57a.png

图1  Windows安装mechanize

已经把Mechanize安装到Windows上,可以直接使用了。

(2)Linux下安装Mechanize

在Linux下找安装软件最简单的方法还是apt-get,感谢“万能”的Debian软件库,即使是Python模块也可以用apt-get一键安装。不必介意Mechanize官网上的安装建议,怎么简单怎么来就可以了。执行命令:

apt-get install python-mechanize

执行结果如图2所示。

fa84775e18ba4064b8cd9ed83cc7791b.png

图2  Linux安装Mechanize

2、Mechanize测试

Mechanize模块常用的命令、方法并不多,作为普通使用者,无须追求掌控所有细节,只需要能使用、会使用即可。它只是一个很简单的模块,多试几次就能熟练掌握。

(1)Mechanize百度

先试一下最简单的用法,以最常用的网站百度为例。使用Mechanize访问百度搜索站点,并使用百度搜索“Python网络爬虫”得到返回结果。如果不使用Mechanize,就只能在浏览器中输入搜索的关键字,再观察URL的变化规律,最后将所有的URL注入列表中,一个个地返回结果爬取数据。下面演示如何使用Mechanize模拟浏览器,搜索关键字。

使用Putty连接到Linux,运行Python程序,并导入Mechanize模块,如图3所示。

4b3d7a2698407a41f743a4ba25b99f1a.png

图3  Mechanize环境

在Python环境下,执行命令:

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)

br.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')]

执行结果如图4所示。

1fd15e6cd927a68e04152283118a6db9.png

图4  Browser环境设置

使用Mechanize浏览器打开百度搜索的主页,并查看网页中的框架。执行命令:

br.open('https://www.baidu.com'):

for form in br.forms():

print form

执行结果如图5所示。

1bc00869bd749d10074c41549fc915f2.png

图5  显示网页框架

从图5中可以看出,只有一个名字为f的框架(有时候框架没有名字,只能用它们的顺序来选择,比如第一个框架是nr=0,第二个是nr=1,以此类推)。输入文字的位置为文本输入框。选择框架,在框架内输入数据后提交数据。以搜索“Python网络爬虫”为例,执行命令:

br.select_form(name='f')

br.form['wd']='Python 网络爬虫'

br.submit()

执行结果如图6所示。

8a83a11f9578dff4c65b76bbca655f6c.png

图6  搜索关键字

返回搜索的结果,执行命令:

print br.response().read()

执行结果如图7所示。

5b1ba8c9f8cad06dcef16eec972a63b7.png

图7  返回搜索结果

查看返回页面的所有链接,执行命令:

for link in br.links():

print("%s:%s" %(link.url,link.text))

执行结果如图8所示。

dbdc210594c08189df43f73969cce0b9.png

图8  返回链接

使用Mechanize浏览器打开指定链接,执行命令:

newLink=br.click_link(text='自己动手写网络爬虫')

br.open(newLink)

执行结果如图9所示。

2a869cf6e0b3faa6c26a34e4019ad74b.png

图9  打开链接

如果觉得打开的链接不对,还可以使用br.back()命令返回上一个页面。Mechanize的基本操作就是这些了。

(2)Mechanize光猫F460

Mechanize可以模拟登录,只是现在几乎所有的站点登录都需要输入验证码。虽然也有开源的解决方案,可以解决验证码什么的,但是有更简单的解决方案,没必要在这里与验证码死磕。最简单的方法就是最合适的方法,宁愿多敲几行代码,也要选择最简单的。

如今无须验证码就可以登录的站点不好找。好在身边有一个现成的Web服务器符合要求,F460光猫的配置页面,而且正好是动态回复数据的,简直是为Mechanize量身定做的。

在浏览器中打开光猫F460的配置页面http://192.168.1.1,执行结果如图10所示。

2017fb07d3178d98e61df6f114a31b2e.png

图10  F460光猫登录

填写用户名和密码后单击“登录”按钮(用户名是admin,密码要么直接问电信,要么在百度里搜索一下“hack f460光猫”),进入配置界面,结果如图11所示。

99d6da905202bf631fae011fac20ddc7.png

图11  获取光猫F460信息

先用Python模拟测试一次。打开Putty,登录到Linux,进入Python环境。执行命令:

import mechanize

cj=mechanize.CookieJar()

br=mechanize.Browser()

br.set_handle_equiv(True)

br.set_handle_gzip(False)

br.set_handle_redirect(True)

br.set_handle_referer(True)

br.set_handle_robots(False)

br.set_handle_refresh(mechanize._http.HTTPRefreshPorcessor(),max_time=1)

br.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.36(KHTML,like Gecko) Chrome/43.0.2357.81 Safair/537.36')]

br.set_cookiejar(cj)

br.open('http://192.168.1.1')

执行结果如图12所示。

5bf3b01ce2d5f604f027a0533c34a480.png

图12  模拟浏览器打开光猫F460主页

查看网页上的框架,执行命令:

for form in br.forms():

print form

执行结果如图13所示。

1f927cd1f1ecbe678a64823773d37396.png

图13  查看主页框架

从图13可以得知,主页框架的名字是fLogin,框架内文本框变量名是Username,密码框的变量名是Password。进入文本框,给变量赋值后,发送数据。执行命令:

br.select_form(name='fLogin')

br.form['Username']='admin'

br.form['Password']='******' #这里输入光猫F460的密码

br.submit()

print br.response().read().decode('gb2312')

其中,在选择框架时,可以用框架名字,也可以用框架的序列号,序列号从0开始。例如,在这里选择框架时就可以用br.select_form(nr=0)。如果需要选择第二个框架,则是br.select_form(nr=1)。执行结果如图14所示。

9c56bac5d84b250693d320abe3da3a5e.png

图14  获取框架URL

这里显示了框架的链接。根据链接的地址template.gch,直接使用Mechanize创建的浏览器打开这个链接就可以了。执行命令:

br.open('http://192.168.1.1/template.gch')

print br.response().read().decode('gb2312')

执行结果如图15所示。

2c02b268be804fdb97fa2a677f7ba7ad.png

图15  获取数据

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值