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网页交互相关推荐

  1. 网页爬虫python代码_Python 爬虫web网页版程序代码

    一:网页结构分析 二:代码实战#! /usr/bin/env python2 # encoding=utf-8 #BeautifulSoup需要安装 MySQLdb import sys,os,re, ...

  2. python与网页交互_可爱的 Python: 使用 mechanize 和 Beautiful Soup 轻松收集 Web 数据

    可爱的 Python 使用 mechanize 和 Beautiful Soup 轻松收集 Web 数据 使用 Python 工具简化 Web 站点数据的提取和组织 David Mertz 2010 ...

  3. 可爱的 Python: 使用 mechanize 和 Beautiful Soup 轻松收集 Web 数据

    可爱的 Python: 使用 mechanize 和 Beautiful Soup 轻松收集 Web 数据 使用 Python 工具简化 Web 站点数据的提取和组织 David Mertz, Ph. ...

  4. pythonflask开发web网页编辑_总结Python+Flask+MysqL的web建设技术过程

    一.个人学期总结 本人在一学期时间内学习并实现基于Python的Flask框架web建设项目,python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年 ...

  5. python︱写markdown一样写网页,代码快速生成web工具:streamlit 重要组件介绍(二)

    python︱写markdown一样写网页,代码快速生成web工具:streamlit(一) 上篇主要是steamlit的介绍以及streamlit的一些初始化,这篇是一些组件的介绍,当然风格是直接上 ...

  6. python学习(三):web网页框架Django,成就python全栈开发

    1.Django安装 框架很完美,组件非常多,但文件太多,过于臃肿(1.. Django是一个高级的Python Web框架,它鼓励快速开发和清洁,务实的设计.· 由经验丰富的开发人员构建,它负责We ...

  7. python 实现网站_python 实现网站_用web.py实现python网站版hello world网页

    github源码安装 浏览器打开https://github.com/webpy/webpy,下载源码zip格式,解压出来.cmd打开,cd到解压目录,输入 python setup.py insta ...

  8. python︱写markdown一样写网页,代码快速生成web工具:streamlit 数据探索案例(六)

    系列参考: python︱写markdown一样写网页,代码快速生成web工具:streamlit介绍(一) python︱写markdown一样写网页,代码快速生成web工具:streamlit 重 ...

  9. python︱写markdown一样写网页,代码快速生成web工具:streamlit 缓存(五)

    系列参考: python︱写markdown一样写网页,代码快速生成web工具:streamlit介绍(一) python︱写markdown一样写网页,代码快速生成web工具:streamlit 重 ...

最新文章

  1. Oracle误删除数据的恢复方法
  2. [经验总结]源代码管理=Ubuntu+Apache+SVN
  3. 网易2022秋季校园招聘-通用技术A卷-0918
  4. 设为首页、加入收藏 兼容代码
  5. 【Python】Matplotlib绘制日期型时间序列图
  6. python中import问题
  7. linux ssh编译命令,linux下升级 OpenSSH
  8. ming window 交叉编译_Golang在windows下交叉编译linux程序
  9. 【GD32F310开发板试用】gcc启动文件制作
  10. HR人事管理系统软件有哪些?如何选择HR人事管理软件?
  11. win10企业版2016长期服务版 无法远程桌面
  12. Java求 a+aa+aaa+aaaa+a....a 的值
  13. html 设置div背景颜色,CSS设置网页背景颜色技术教程篇
  14. java string时间类型天数运算
  15. 【Linux基础】Ubuntu 20.04系统安装(完整版)
  16. android抖音自动刷新,Android 使用SwipeRefreshLayout控件仿抖音做的视频下拉刷新效果...
  17. 斐讯N1安装armbian
  18. 逻辑运算符符号化命题——数理逻辑
  19. 去哪儿网马文: ESAAS平台技术开发实战
  20. pytorch训练神经网络loss刚开始下降后来停止下降的原因

热门文章

  1. 星际无限 | 2021年IPFS应该关注的重点是什么?
  2. 逻辑运算符和逻辑表达式(逻辑或、逻辑与、逻辑非)
  3. 前端VS后端Web开发
  4. OpenCV.反阈值二值化
  5. Altium Designer 如何从已有的PCB图、原理图,分别导出PCB封装库和原理图封装库
  6. 【心电监测】理论1-相关医学知识
  7. logi option闪退_罗技鼠标你终于让我心态崩了(始末)
  8. 基于 SpringBoot 的人事管理系统的设计与实现
  9. 【java】springboot项目启动数据加载内存中的三种方法
  10. K-means算法及文本聚类实践