您的位置:首页 > 编程语言 > Python开发

python 使用mechanize进行web网页交互

2015-07-16 20:55 901 查看

1. 有状态的网页

  所谓有状态的网页就是区别于传统html的动态交互式页面,它与用户进行交互显示不同的结果。下面我以新浪邮箱的登陆界面为例:

  



  上面有一个用户登陆的表单,当我们输入正确地用户名密码之后,登陆成功转向邮箱操作窗口,否则给出错误信息。

2. 使用python中mechanize库进行处理

  使用mechanize库需要注意以下几个特点:

  

mechanize自动处理cookies。

要理解与网页交互的过程。

点击链接,填写和提交表单

2.1 登陆页面

  代码中要使用到mechanize库,如果没有安装的话可使用以下命令进行安装。

  
sudo pip install mechanize


I. 导入mechanize库,使用Browser()打开邮箱登陆页面。


>>>

>>> import mechanize

>>> br = mechanize.Browser()

>>>

>>> br.open(‘http://mail.sina.com.cn/‘)

< response_seek_wrapper at 0xb6c1eb2cL whose wrapped object = < closeable_response at 0xb6c2164cL whose fp = < socket._fileobject object at \0xb6c18b2c>>>

>>>

II. 列出网页中的表单。


>>>

>> for form in br.forms():

… print form



< POST http://mail.sina.cn/cgi-bin/sla.php?vt=3 application/x-www-form-urlencoded

< TextControl(local=)>

< SelectControl(domain=[*sina.com, sina.cn, 2008.sina.com, vip.sina.com])>

< PasswordControl(pwd=)>

< CheckboxControl(remember=[*1])>

< SubmitControl(=登录) (readonly)>>

>>>

III. 填写表单信息。


>>>

>>> br.select_form(nr=0)

>>> br.form[‘local’] = ‘pythontesting’

>>> br.form[‘pwd’] = ‘test*#123’

>>>

IV. 提交表单并查看返回代码


>>> br.submit()

< response_seek_wrapper at 0xb6c1eb8cL whose wrapped object = < closeable_response at 0x884ed8c whose fp = < socket._fileobject object at 0x881fb6c>>>

>>>

>>> print br.response().read()



  从结果上看,已经成功登陆上去了。

2.2 点击链接,跳转页面

  I. 首先列出邮箱页面中含有的链接.

  

>>>

>> for link in br.links():

… print link.url + ‘:’+link.text



/basic/?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: