python 使用mechanize进行web网页交互
来源:互联网 发布:芒果网络考试系统 3.9 编辑:程序博客网 时间:2024/05/16 04:49
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:[IMG]
/basic/listmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3&fid=new:收信
/basic/writemail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3:写信
/basic/findmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3:查找
/basic/listmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3&fid=new:收件夹(3)
/basic/listmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3&type=1&fid=all:未读邮件(3)
/basic/listmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3&fid=cur:草稿夹
/basic/listmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3&fid=out:已发送
/basic/listmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3&fid=subs:订阅邮件
/basic/listmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3&fid=tmp:已删除
/basic/listmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3&fid=unk:垃圾邮件
/basic/listmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3&fid=74:网站通知
/basic/listmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3&fid=75:订单账单
/basic/listmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3&fid=76:社交网络
/basic/listmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3&fid=77:订阅资讯
/basic/listmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3&fid=73:商讯信息
/basic/listmail.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3&fid=all:所有邮件(3)
/basic/logout.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3:退出
/basic/about.php?sid=4840c2ea0c566e95ea5b3bbe224125586&vt=3:帮助
>>>
II. 打开链接,跳转。
>>>
>>> new_link = br.click_link(text=’未读邮件(3)’)
>>>
>>> br.open(new_link)
< response_seek_wrapper at 0xb6c1e5ecL whose wrapped object = < closeable_response at 0x8853a8c whose fp = < socket._fileobject object at 0x881fdec>>>
>>>
- python 使用mechanize进行web网页交互
- python使用mechanize与网页交互
- python 使用 mechanize 模拟浏览器访问网页
- python使用mechanize
- Python使用mechanize模拟浏览器
- python与web进行交互
- Mechanize模拟自然网页交互一些基本常用方法
- Mechanize模拟自然网页交互一些基本常用方法
- python使用mechanize模拟登陆新浪邮箱
- Python使用paramiko进行远程交互
- 转载:使用 mechanize 和 BeautifulSoup 收集 Web 数据
- Python使用mechanize模拟登录、抓取数据的代码
- Python使用mechanize模拟登录、抓取数据的代码
- python 之mechanize
- Python mechanize模块
- Python Mechanize Cheat Sheet
- 使用Python进行Web数据处理
- 使用python进行web抓取
- POJ-2192
- Node:区间DP-1
- 习题3-2 分子量(Molar Mass)
- html常用的标签
- #笔记#圣思园 JavaWeb 第42讲——Listener监听器,观察者模式
- python 使用mechanize进行web网页交互
- TCP粘包问题的分析与解决
- UVa400 按列输出
- 编程日记-20150716
- MUI-折叠面板效果accordion
- Android 面试题收集
- 第十二章:默认复制构造函数和赋值运算符
- 全局最小割模板
- 黑马程序员