工作上我需要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模拟自然浏览器行为来完成与网页之间的交互....相关推荐

  1. python拼图游戏代码_教你用Python自制拼图小游戏,轻松搞定熊孩子

    摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...

  2. python抢票代码_教你用Python动刷新抢12306火车票,附源码!

    用python另一个抢票神器,你get到了吗? 2017年时间飞逝,转眼间距离2018年春节还有不到1个月的时间,还在为抢不到火车票发愁吗?作为程序员的我们撸一个抢票软件可好? ... 难以想象的数据 ...

  3. python画美女代码_教你用python爬取网站美女图(附代码及教程)

    我前几篇文章都是说一些python爬虫库的用法,还没有说怎样利用好这些知识玩一些好玩的东西.那我今天带大家玩好玩又刺激的,嘻嘻!对了,requests库和正则表达式很重要的,一定要学会!一定要学会!! ...

  4. python 动态编译代码_使用PyQt(Python+Qt)+动态编译36行代码实现的计算器

    PyQt是基于跨平台的图形界面C++开发工具Qt加Python包装的一个GPL软件(GPL是GNU General Public License的缩写,是GNU通用公共授权非正式的中文翻译),Qt基于 ...

  5. python秒表游戏代码_用20行Python代码实现2048小游戏,你会吗?

    前些天在b站上看到有个大佬用c写了一个2048小游戏,我便一下来了兴趣.心想着,我貌似也能用Python来整一波,话不多说,直接开搞. 2048的游戏规则: 2048游戏总共有16个格子,初始时会有两 ...

  6. python登录接口代码_(转载)Python 的 OAuth 登录接口 python-oauth2

    前言 python-oauth2 是 Python 语言的 OAuth 2 的实现,包括客户端和服务器端.该项目经过完整的测试. 它拥有一下特点: 100%单元测试覆盖. 完全去掉了DataStore ...

  7. python画人脸代码_[转]7行Python代码的人脸识别

    随着去年alphago 的震撼表现,AI 再次成为科技公司的宠儿.AI涉及的领域众多,图像识别中的人脸识别是其中一个有趣的分支.百度的BFR,Face++的开放平台,汉王,讯飞等等都提供了人脸识别的A ...

  8. python回测代码_只用3行Python回测你的交易策略

    作者|Lorenzo Ampil 编译|VK 来源|Towards Data Science 自从我开始学习投资,我接触了不同的股票分析方法-技术分析和基本面分析.我甚至读过很多关于这些技巧的书和文章 ...

  9. python画图颜色代码_关于matplotlib:Python:制作从红色到蓝色的颜色条

    我要绘制一系列线(目前总共60条线),以绘制到同一图中以显示某个过程的时间演变.当前已绘制线,因此最早的时间步长以100%红色绘制,最新的时间步长以100%蓝色绘制,中间的时间步长根据时间分别为红色和 ...

最新文章

  1. shell学习之shell基础知识了解
  2. python 调用linux命令-Python调用Linux bash命令
  3. 好好学python · 字符串(find(),index(),split(),join(),strip(),replace())
  4. JavaWeb学习总结(三十五)——使用JDBC处理Oracle大数据
  5. 华三实现vlan通过
  6. php 新浪面试题,新浪网技术部笔试题
  7. 存储程序(1)——MYSQL
  8. MySQL实用第三方客户端工具收集
  9. ACM-尼姆博弈之取(m堆)石子游戏——hdu2176
  10. php 抽奖活动_php 实现活动人选抽奖功能代码
  11. 对数幅度谱图像matlab,幅度谱 fft2绘制图像的对数幅度谱,比较图像旋转、平移和缩放后的频谱...
  12. 【Windows 10系统】惠普打印机解决打印机状态已暂停
  13. matlab函数积分怎么写,Matlab求分段函数的积分
  14. 微信小程序访问后端服务器
  15. Debian11系统安装
  16. Vue组件库 View UI 来看看这80种奇奇怪怪的按钮
  17. 项目管理:PMP、IPMP、CPMP之间区别
  18. 【4天快速入门Python数据挖掘之第1天】Matplotlib的使用
  19. 计算机vb考试程序试题,计算机二级VB考试练习题
  20. 软考A计划-挂靠流程和注意事项

热门文章

  1. 64位Win7 “为硬件保留的内存”问题的解决
  2. 公共云和私有云之间的区别
  3. 高亮版gbasp是什么屏幕_有光才更出色:GBA更换高亮屏
  4. Head注入(USERANGENT、Referer、X-forword-for)
  5. linux安装redis-4.0.2
  6. 1-6 类、属性和方法(一)
  7. 阿里云使用笔记-第六篇-CentOS搭建Sentry日志监控平台
  8. CentOS安装Sonarqube9
  9. 基于三菱PLC的饮料售货机控制系统设计
  10. 什么是GPIO的推挽输出和开漏输出