iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python使用Mechanize模块编写爬虫的要点解析
  • 486
分享到

Python使用Mechanize模块编写爬虫的要点解析

爬虫要点模块 2022-06-04 19:06:22 486人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

mechanize是对urllib2的部分功能的替换,能够更好的模拟浏览器行为,在WEB访问控制方面做得更全面。结合beautifulsoup和re模块,可以有效的解析web页面,我比较喜欢这种方法。

mechanize是对urllib2的部分功能的替换,能够更好的模拟浏览器行为,在WEB访问控制方面做得更全面。结合beautifulsoup和re模块,可以有效的解析web页面,我比较喜欢这种方法。
下面主要总结了使用mechanize模拟浏览器的行为和几个例子(谷歌搜索,百度搜索和人人网登录等)
1.初始化并建立一个浏览器对象
如果没有mechanize需要easy_install安装,以下代码建立浏览器对象并作了一些初始化设置,实际使用过程可以按需开关。其实只用默认的设置也可以完成基本任务。


#!/usr/bin/env python
import sys,mechanize

#Browser
br = mechanize.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 > 0
br.set_handle_refresh(mechanize._Http.HTTPRefreshProcessor(), max_time=1)

#debugging?
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')]


2.模拟浏览器行为
浏览器对象建立并初始化完毕之后即可使用了,下面给出几个例子(代码承接以上部分)
获取web网页:
分行打印可以逐个查看详细信息,就不赘述


r = br.open(sys.argv[1])
html = r.read()
print html
print br.response().read()
print br.title()
print r.info()


模拟谷歌和百度查询
打印和选择fORMs,然后填写相应键值,通过post提交完成操作


for f in br.forms():
 print f

br.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()


相应键值名,可以通过打印查出

回退(Back)
非常简单的操作,打印url即可验证是否回退


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

3.http基本认证


br.add_password('http://xxx.com', 'username', 'passWord')
br.open('http://xxx.com')

4.form认证
以登陆人人网为例,打印forms可以查出用户名和密码键信息


br.select_form(nr = 0)
br['email'] = username
br['password'] = password
resp = self.br.submit()

5.cookie支持
通过导入cookielib模块,并设置浏览器cookie,可以在需要认证的网络行为之后不用重复认证登陆。通过保存session cookie即可重新访问,Cookie jar完成了该功能。


#!/usr/bin/env Python
import mechanize, cookielib

br = mechanize.Browser()
cj = cookielib.LWPCookieJar()
br.set_cookiejar()

6.proxy设置
设置http代理


#Proxy
br.set_proxies({"http":"proxy.com:8888"})
br.add_proxy_password("username", "password")

#Proxy and usrer/password
br.set_proxies({"http":"username:password@proxy.com:8888"})

7.关于内存过高问题

在用mechanize写了一个爬虫脚本,想要去某网站爬取大概30万张图片。

整个过程是:
1、获取目标页面地址
2、取得目标地址前几页的所有图片url
3、对这些url进行下载,并把索引数据保存到Mysql数据库


这个脚本大概每秒钟完成一张图片的下载(主要是网络只有200K/S左右,是瓶颈)
当图片下载到大约15000张左右的时候,发现越来越慢,最后干脆停下了。
用ps aux查看,发现进程sleep了,感觉很奇怪。
free看一下,内存竟然只剩下100M了(系统总内存4GB)
在网上瞎逛了一下,发现原来mechanize默认会保存模拟过的操作历史,导致占用的内存越来越大:
http://stackoverflow.com/questions/2393299/how-do-i-disable-history-in-python-mechanize-module

为了方便,大约翻译一下:
mechanize初始化Browser()的时候,如果你不给他传一个history对象作为参数,Browser()就会按照默认的方式(允许保存操作历史)来进行初始化,你可以随便传个什么history给它即可,如自定义一个NoHistory对象:


class NoHistory(object): 
 def add(self, *a, **k): pass 
 def clear(self): pass 
 
b = mechanize.Browser(history=NoHistory()) 

--结束END--

本文标题: Python使用Mechanize模块编写爬虫的要点解析

本文链接: https://www.lsjlt.com/news/15069.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python爬虫使用lxml模块爬取豆瓣
    上次使用了BeautifulSoup库爬取电影排行榜,爬取相对来说有点麻烦,爬取的速度也较慢。本次使用的lxml库,我个人是最喜欢的,爬取的语法很简单,爬取速度也快。 本次爬取的豆瓣书籍排行榜的首页地址是: https://www.dou...
    99+
    2023-01-31
    爬虫 豆瓣 模块
  • python爬虫之selenium模块怎么使用
    这篇文章主要介绍了python爬虫之selenium模块怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python爬虫之selenium模块怎么使用文章都会有所收获,下面我们一起来看看吧。一、什么是Se...
    99+
    2023-06-30
  • Python中urllib爬虫、request模块和parse模块的示例分析
    小编给大家分享一下Python中urllib爬虫、request模块和parse模块的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!urlliburlli...
    99+
    2023-06-14
  • 使用PHP编写爬虫的方法
    本篇内容介绍了“使用PHP编写爬虫的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说到爬虫,大家的第一印象就会想到Python, 但是P...
    99+
    2023-06-20
  • python爬虫之请求模块urllib的基本使用
    目录前言urllib的子模块HttpResponse常用方法与属性获取信息urlli.parse的使用(一般用于处理带中文的url)✅爬取baidu官网HTML源代码✅添加请求头信息...
    99+
    2024-04-02
  • 使用python编写简单网络爬虫(一)
          总算有时间动手用所学的python知识编写一个简单的网络爬虫了,这个例子主要实现用python爬虫从百度图库中下载美女的图片,并保存在本地,闲话少说,直接贴出相应的代码如下:---------------------------...
    99+
    2023-01-31
    爬虫 简单 网络
  • python爬虫urllib库中parse模块urlparse的使用方法
    这篇文章主要介绍了python爬虫urllib库中parse模块urlparse的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在python爬虫urllib库中,u...
    99+
    2023-06-14
  • Python爬虫解析器BeautifulSoup4怎么使用
    这篇文章主要介绍“Python爬虫解析器BeautifulSoup4怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python爬虫解析器BeautifulSoup4怎么使用”文章能帮助大家解...
    99+
    2023-07-02
  • python xlwt模块的使用解析
    目录一、基础类介绍1、工作簿类Workbook简介:2、工作表类WorkSheet简介3、创建一个不带样式的基础Excel表二、xlwt高级应用1、字体类Font简介1.1创建一个改...
    99+
    2024-04-02
  • 详解如何用Python写个听小说的爬虫
    目录书名和章节列表音频地址下载完整代码总结在路上发现好多人都喜欢用耳机听小说,同事居然可以一整天的带着一只耳机听小说。小编表示非常的震惊。今天就用 Python 下载听小说 ...
    99+
    2024-04-02
  • python爬虫之requests库的使用详解
    目录python爬虫—requests库的用法基本的get请求带参数的GET请求:解析json使用代理获取cookie会话维持证书验证设置超时异常捕获异常处理 总结 python爬虫...
    99+
    2024-04-02
  • Python爬虫库urllib的使用教程详解
    目录Python urllib库urllib.request模块urlopen函数Request 类urllib.error模块URLError 示例HTTPError示例...
    99+
    2022-11-21
    Python爬虫库urllib使用 Python urllib使用 Python urllib
  • python爬虫使用代理ip的重要性有哪些
    这篇文章将为大家详细讲解有关python爬虫使用代理ip的重要性有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、防止网站反爬虫在使用爬虫多次爬取同一网站时,经常会被网站的IP反爬虫机制给禁掉,为了...
    99+
    2023-06-15
  • Python使用爬虫爬取贵阳房价的方法详解
    目录1序言1.1生存压力带来的哲思1.2 买房&房奴2爬虫 2.1基本概念2.2 爬虫的基本流程 3爬取贵阳房价并写入表格3.1结果展...
    99+
    2024-04-02
  • python如何使用wrapt模块编写更扁平的装饰器
    这篇文章主要介绍了python如何使用wrapt模块编写更扁平的装饰器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用 wrapt 模块编...
    99+
    2024-04-02
  • 用Python爬虫破解滑动验证码的案例解析
    做爬虫总会遇到各种各样的反爬限制,反爬的第一道防线往往在登录就出现了,为了限制爬虫自动登录,各家使出了浑身解数,所谓道高一尺魔高一丈。 今天分享个如何简单处理滑动图片的验证码的案例。...
    99+
    2024-04-02
  • python中os模块和sys模块的使用详解
    目录一、os模块二、os模块中的os.walk()函数三、sys模块一、os模块 os.getcwd() 获取当前的工作目录 os.chdir(‘绝对路径/相对于当前工作...
    99+
    2023-03-21
    python os模块 python sys模块
  • python网络爬虫精解之pyquery的使用说明
    目录一、pyquery的介绍二、pyquery的使用1、初始化工作字符串URL文件初始化2、查找节点(1)查找子节点(2)匹配父节点(3)匹配兄弟节点3、遍历4、获取信息(1)获取属...
    99+
    2024-04-02
  • python urllib.request模块的使用详解
    目录urllib子模块 request模块 function request.urlopen() class request.Request python的urllib模块提供了一系...
    99+
    2024-04-02
  • python的numpy模块使用实例分析
    今天小编给大家分享一下python的numpy模块使用实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Numpy是Nu...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作