Python使用mechanize模拟浏览器

之前我使用自带的urllib2模拟浏览器去进行访问网页等操作,很多网站都会出错误,还会返回乱码,之后使用了 mechanize模拟浏览器,这些情况都没出现过,真的很好用,这里向大家推荐一下。
mechanize是对urllib2的部分功能的替换,能够更好的模拟浏览器行为,在web访问控制方面做得更全面。

首先从安装开始吧,以ubuntu系统为例:

python 绝大部分第三方软件包,都是标准安装方式,从官网下载之后,解压到一个文件夹内,然后在这个文件夹内执行这个命令就行了:

python setup.py install

官网网址:
http://wwwsearch.sourceforge.net/mechanize/

更方便的方法就是:

先安装easy_install工具:

正常情况下,我们要给Python安装第三方的扩展包,我们必须下载压缩包,解压缩到一个目录,然后命令行或者终端打开这个目录,然后执行
python setup.py install
来进行安装。
而使用easy_install我们就可以直接命令行执行
easy_install xxx
就把最新版的xxx包装上去了
所以easy_install就是为了我们安装第三方扩展包更容易

安装方法:

首先下载easy_install的安装包,下载地址:
http://pypi.python.org/pypi/setuptools

下载自己对应的版本,windows上面直接运行exe安装就可以了

linux上面可以直接运行
sh setuptools-0.6c9-py2.4.egg

安装完成后,easy_install会被自动复制到bin目录下,也就是我们的PATH路径下,所以我们在终端中可以直接运行easy_install命令了

在ubuntu下还有简洁安装方法:

安装easy_install的命令如下:

sudo apt-get install python-setuptools

再用easy_install安装Mechanize,即:

sudo easy_install Mechanize

安装好之后就可以愉快的使用了,首先是模拟一个浏览器的代码:

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)# Follows refresh 0 but not hangs on refresh > 0br.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')]

这样就得到了一个浏览器的实例,br对象。使用这个对象,便可以对网页操作:

# Open some site, let's pick a random one, the first that pops in mind:r = br.open('http://www.baidu.com')
html = r.read()# Show the sourceprint html# orprint br.response().read()# Show the html titleprint br.title()# Show the response headersprint r.info()# orprint br.response().info()# Show the available formsfor f in br.forms():print f# Select the first (index zero) formbr.select_form(nr=0)# Let's searchbr.form['q']='weekend codes'
br.submit()
print br.response().read()# Looking at some results in link formatfor l in br.links(url_regex='stockrt'):print l

另外如果访问的网站需要验证(http basic auth),那么:

# If the protected site didn't receive the authentication data you would
# end up with a 410 error in your facebr.add_password('http://safe-site.domain', 'username', 'password')
br.open('http://safe-site.domain')

另外利用这个方法,存储和重发这个session cookie已经被Cookie Jar搞定了,并且可以管理浏览器历史:。除此之外还有众多应用,如下载:

# Downloadf = br.retrieve('http://www.google.com.br/intl/pt-BR_br/images/logo.gif')[0]
print f
fh = open(f)

为http设置代理 :

# Proxy and user/password
br.set_proxies({"http": "joe:password@myproxy.example.com:3128"})
# Proxy
br.set_proxies({"http": "myproxy.example.com:3128"})
# Proxy password
br.add_proxy_password("joe", "password")

回退(Back):

打印url即可验证是否回退

    # Backbr.back()print br.geturl()

模拟谷歌和百度查询:

即打印和选择forms,然后填写相应键值,通过post提交完成操作
    for f in br.forms():print fbr.select_form(nr=0)
谷歌查询football
    br.form['q'] = 'football'br.submit()print br.response().read()
百度查询football
    br.form['wd'] = 'football'br.submit()print br.response().read()
相应键值名,可以通过打印查出

更多的信息大家可以去官网查看

另外使用mechanize模拟浏览器去不断访问网页是可以刷各种博客的访问量的,包括CSDN,我声明一下,我测试刷了10个访问就不搞了,毕竟刷访问量是个很没品的事情,而且没什么意义,好好写一篇博客是为了自己总结自己,也是为了帮助他人,分享经验,去追求什么访问量,积分是没有意义的,奉劝大家也不要乱搞。而且这个很容易查的,被查出来的后果可是很严重的,简单脚本如下,这个是刷一个网页100次,间隔1秒:

#!/usr/bin/env pythonimport mechanize
import cookielibfrom time import ctime,sleepdef run():print 'start!'for i in range(100):browse()print "run",i,"times ",ctime()sleep(1)def browse():br = mechanize.Browser()cj = cookielib.LWPCookieJar()br.set_cookiejar(cj)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)br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)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')]r = br.open('http://www.baidu.com')html = r.read()#print htmlrun()print "!!!!!!!!!!!!!!!!!!all over!!!!!!!!!!!!!!!!!! \n %s" %ctime()

我还是学生,写的不好的地方还请多多指正,

转载请注明出处:

http://blog.csdn.net/sunmc1204953974

Python使用mechanize模拟浏览器相关推荐

  1. Python:mechanize模拟浏览器行为

    Python有许许多多有趣的模块,每当自己需要解决某个问题的时候,Python总能冒出来一两个让你惊喜的小玩意.比如说用于数值计算的Numpy(强大而方便的矩阵能力),用于数据分析的Pandas(和R ...

  2. python之mechanize模拟浏览器

    安装 Windows: pip install mechanize Linux:pip install python-mechanize 个人感觉mechanize也只适用于静态网页的抓取,如果是异步 ...

  3. Mechanize模拟浏览器

    简介: Mechanize 是一个 Python 模块,用于模拟浏览器.由于考虑到爬虫所需要的是数据,所以该模块完全可以绕过验证码,直接使用 Cookie 登录就可以了.但是 Mechanize 模块 ...

  4. Python+BeautifulSoup+Selenium模拟浏览器循环自动播放视频,如哔哩哔哩某个UP主的视频

    1.前言 计算机的出现,推动了人类社会的进步,使得人们更高效的工作或是生活.当我们很"懒"的时候,计算机就能站出来,帮助我们做一些我们觉得浪费时间的事情了.你嫌用手点鼠标麻烦,计算 ...

  5. python模块学习---mechanize(模拟浏览器)

    mechanize是非常合适的模拟浏览器的模块. 它的特点主要有: 1 http,https协议等. 2 简单的HTML表单填写. 3 浏览器历史记录和重载. 4 Referer的HTTP头的正确添加 ...

  6. python 模拟浏览器操作_python 使用 mechanize 模拟浏览器访问网页

    知道如何快速在命令行或者python脚本中实例化一个浏览器通常是非常有用的. 每次我需要做任何关于web的自动任务时,我都使用这段python代码去模拟一个浏览器. import mechanize ...

  7. python模拟浏览器模块,python模块学习---mechanize(模拟浏览器)

    mechanize是非常合适的模拟浏览器的模块. 它的特点主要有: 1 http,https协议等. 2 简单的HTML表单填写. 3 浏览器历史记录和重载. 4 Referer的HTTP头的正确添加 ...

  8. chrome动态ip python_简单python代码实现模拟浏览器操作

    首先安装python环境,楼主为python3.6.6 用pip 安装selenium pip install selenium 下面是代码的具体实现: #交互模式 from selenium imp ...

  9. Python利用Selenium模拟浏览器自动操作

    概述 在进行网站爬取数据的时候,会发现很多网站都进行了反爬虫的处理,如JS加密,Ajax加密,反Debug等方法,通过请求获取数据和页面展示的内容完全不同,这时候就用到Selenium技术,来模拟浏览 ...

最新文章

  1. 10万视频,所有图像均获授权,Facebook创建大规模Deepfake数据集
  2. 猜猜乐游戏php源码,C/C++百行代码实现热门游戏消消乐功能的示例代码
  3. 桌面计算机硬盘打不开,我电脑的磁盘打不开,是什么问题?
  4. QT Creator常用快捷键
  5. 通向架构师的道路(第五天)之tomcat集群-群猫乱舞
  6. php pdo连接oracle乱码,php pdo oracle中文乱码的快速解决方法
  7. C#中搜索关键词高亮显示
  8. .NET中的内存管理
  9. js $.ajax stop,jQuery.ajaxStop() 函数详解
  10. numpy教程:ndarray属性、内建函数及其运算、迭代
  11. shell编程——判断条件
  12. Windows XP声卡驱动正常,丢失声音服务的解决
  13. 74LS 系列与 74HC,74HCT,CD系列的区别
  14. 高效能人士的七个习惯读后感与总结概括-(第一章)
  15. 如何建立个人的免费网站
  16. 2018年数学建模国赛B题 智能RGV的动态调度策略
  17. 宾客往来络绎不绝 企业访客管理如何不失礼仪
  18. php迭代什么意思,迭代关系什么意思
  19. 华为无线AC配置实例-华为3层ac旁挂+直接转发
  20. 2021 工业信息安全技能大赛 线上赛第一场--隐藏的工程

热门文章

  1. Intel 80x86处理器简介
  2. R/RStudio详细安装流程
  3. java中OOD_Java面向对象OOD
  4. Sentinel系列4--- 实战限流篇
  5. 【AI科幻】地球陨落 · 初始
  6. PHP身份证查询代码
  7. 数据结构C语言版:魔术师发牌问题
  8. 一阶广义差分模型_广义差分法和自相关系数估计.ppt
  9. 11.Hexo博客框架初识入门到进阶
  10. 4G浏览器用户超5000万 将上线打车功能