python浏览器交互代码_使用Mechanize实现Python模拟自然浏览器行为来完成与网页之间的交互....
工作上我需要Python模拟自然的浏览器行为访问某个网站。使用urllib2也勉强能够做到,但貌似有些麻烦。考虑使用第三方包来实现,这样方便一些。上网找了下,发现
用pamie,是用来操作控制ie的。官方主页:http://pamie.sourceforge.net/。PAMIE其实是一套为Python写的用于Web自动化测试的工具,采用Win32COM的方式操作IE来实现(看到这你也明白了它在*unix下就不能用了)。 它的使用可以参考大牛limodou的文章http://blog.donews.com/limodou/archive/2005/02/15/277637.aspx
selenium RC (它支持多浏览器,所以在测试中用到这个会比较有用,RC 版支持python语言),官方主页是:http://seleniumhq.org/。 可参考此处文章 PYTHON中使用SELENIUM作为WEB BROWSER引擎
使用Mechanize。使用mechanize也是相当简单的。
Python 2.x 中的模块 urllib 和 urllib2,以及 Python 3.0 中的统一的 urllib.* 子包,可以在 URL 的末尾获取资源。然而,当您希望与 Web 页面中找到的内容进行某种比较复杂的交互时,您需要使用 mechanize 库。
在自动 网页抓取或用户与 Web 站点的交互模拟中,最大的困难之一就是服务器使用 cookies 跟踪会话进度。mechanize 库将这种处理提升到一个更高程度的抽象并使您的脚本 — 或交互性 Python shell — 表现出非常类似实际 Web 浏览器的行为。
Python 的 mechanize 受到 Perl 的 WWW:Mechanize 的启发,后者具有类似的一组功能。
简单的使用示例如下:(翻译自参考3)
[python]
import mechanize
import cookielib
# Browser
br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False) #这个是设置对方网站的robots.txt是否起作用。
# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
# Want debugging messages?
#br.set_debug_http(True)
#br.set_debug_redirects(True)
#br.set_debug_responses(True)
# User-Agent (this is cheating, ok?)
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')] #设置ua
[/python]
现在已经创建好了br这个浏览器对象,可以用它来打开页面,或者进行交互。
[python]# Open some site, let’s pick a random one, the first that pops in mind:
r = br.open(‘http://google.com’)
html = r.read()
# Show the source
print html
# or
print br.response().read()
# Show the html title
print br.title()
# Show the response headers
print r.info()
# or
print br.response().info()
# Show the available forms
for f in br.forms():
print f
# Select the first (index zero) form
br.select_form(nr=0)
# Let’s search
br.form['q']=’weekend codes’
br.submit()
print br.response().read()
# Looking at some results in link format
for l in br.links(url_regex=’stockrt’):
print l[/python]
如果有密码的话就需要添加如下的代码:
[python]# If the protected site didn’t receive the authentication data you would
# end up with a 410 error in your face
br.add_password(‘http://safe-site.domain’, ‘username’, ‘password’)
br.open(‘http://safe-site.domain’)[/python]
#follow_link也常使用到
for link in br.links(url_regex="python.org"):
print link
br.follow_link(link) # 接受 link对象 或者 参数列表
br.back()
更多更详细内容可参考这里:
python浏览器交互代码_使用Mechanize实现Python模拟自然浏览器行为来完成与网页之间的交互....相关推荐
- python拼图游戏代码_教你用Python自制拼图小游戏,轻松搞定熊孩子
摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...
- python抢票代码_教你用Python动刷新抢12306火车票,附源码!
用python另一个抢票神器,你get到了吗? 2017年时间飞逝,转眼间距离2018年春节还有不到1个月的时间,还在为抢不到火车票发愁吗?作为程序员的我们撸一个抢票软件可好? ... 难以想象的数据 ...
- python画美女代码_教你用python爬取网站美女图(附代码及教程)
我前几篇文章都是说一些python爬虫库的用法,还没有说怎样利用好这些知识玩一些好玩的东西.那我今天带大家玩好玩又刺激的,嘻嘻!对了,requests库和正则表达式很重要的,一定要学会!一定要学会!! ...
- python 动态编译代码_使用PyQt(Python+Qt)+动态编译36行代码实现的计算器
PyQt是基于跨平台的图形界面C++开发工具Qt加Python包装的一个GPL软件(GPL是GNU General Public License的缩写,是GNU通用公共授权非正式的中文翻译),Qt基于 ...
- python秒表游戏代码_用20行Python代码实现2048小游戏,你会吗?
前些天在b站上看到有个大佬用c写了一个2048小游戏,我便一下来了兴趣.心想着,我貌似也能用Python来整一波,话不多说,直接开搞. 2048的游戏规则: 2048游戏总共有16个格子,初始时会有两 ...
- python登录接口代码_(转载)Python 的 OAuth 登录接口 python-oauth2
前言 python-oauth2 是 Python 语言的 OAuth 2 的实现,包括客户端和服务器端.该项目经过完整的测试. 它拥有一下特点: 100%单元测试覆盖. 完全去掉了DataStore ...
- python画人脸代码_[转]7行Python代码的人脸识别
随着去年alphago 的震撼表现,AI 再次成为科技公司的宠儿.AI涉及的领域众多,图像识别中的人脸识别是其中一个有趣的分支.百度的BFR,Face++的开放平台,汉王,讯飞等等都提供了人脸识别的A ...
- python回测代码_只用3行Python回测你的交易策略
作者|Lorenzo Ampil 编译|VK 来源|Towards Data Science 自从我开始学习投资,我接触了不同的股票分析方法-技术分析和基本面分析.我甚至读过很多关于这些技巧的书和文章 ...
- python画图颜色代码_关于matplotlib:Python:制作从红色到蓝色的颜色条
我要绘制一系列线(目前总共60条线),以绘制到同一图中以显示某个过程的时间演变.当前已绘制线,因此最早的时间步长以100%红色绘制,最新的时间步长以100%蓝色绘制,中间的时间步长根据时间分别为红色和 ...
最新文章
- shell学习之shell基础知识了解
- python 调用linux命令-Python调用Linux bash命令
- 好好学python · 字符串(find(),index(),split(),join(),strip(),replace())
- JavaWeb学习总结(三十五)——使用JDBC处理Oracle大数据
- 华三实现vlan通过
- php 新浪面试题,新浪网技术部笔试题
- 存储程序(1)——MYSQL
- MySQL实用第三方客户端工具收集
- ACM-尼姆博弈之取(m堆)石子游戏——hdu2176
- php 抽奖活动_php 实现活动人选抽奖功能代码
- 对数幅度谱图像matlab,幅度谱 fft2绘制图像的对数幅度谱,比较图像旋转、平移和缩放后的频谱...
- 【Windows 10系统】惠普打印机解决打印机状态已暂停
- matlab函数积分怎么写,Matlab求分段函数的积分
- 微信小程序访问后端服务器
- Debian11系统安装
- Vue组件库 View UI 来看看这80种奇奇怪怪的按钮
- 项目管理:PMP、IPMP、CPMP之间区别
- 【4天快速入门Python数据挖掘之第1天】Matplotlib的使用
- 计算机vb考试程序试题,计算机二级VB考试练习题
- 软考A计划-挂靠流程和注意事项