首页 > 编程知识 正文

python3.3怎么爬虫,linuxpython怎么写爬虫

时间:2023-05-06 05:33:52 阅读:240020 作者:2289

原标题:Python 爬虫:Mechanize 安装与测试

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

1、安装Mechanize模块

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

(1)Windows下安装Mechanize

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

pip install mechanize

执行结果如图1所示。

图1 Windows安装mechanize

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

(2)Linux下安装Mechanize

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

apt-get install python-mechanize

执行结果如图2所示。

图2 Linux安装Mechanize

2、Mechanize测试

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

(1)Mechanize百度

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

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

图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所示。

图4 Browser环境设置

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

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

for form in br.forms:

print form

执行结果如图5所示。

图5 显示网页框架

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

br.select_form(name='f')

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

br.submit

执行结果如图6所示。

图6 搜索关键字

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

print br.response.read

执行结果如图7所示。

图7 返回搜索结果

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

for link in br.links:

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

执行结果如图8所示。

图8 返回链接

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

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

br.open(newLink)

执行结果如图9所示。

图9 打开链接

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

(2)Mechanize光猫F460

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

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

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

图10 F460光猫登录

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

图11 获取光猫F460信息

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

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所示。

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

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

for form in br.forms:

print form

执行结果如图13所示。

图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所示。

图14 获取框架URL

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

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

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

执行结果如图15所示。

责任编辑:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。