精华内容
下载资源
问答
  • # Browserbr = mechanize.Browser()br.set_cookiejar(cj) # Browser optionsbr.set_handle_equiv(True)br.set_handle_gzip(True)br.set_handle_redirect(True)br.set_handle_referer(True)br.se
  • 最近实验室的网络状况不太稳定,信息采集程序经常阻塞在通信时的recv()处,Python的urllib2/mechanize库在做HTTP访问时,是用socket方式进行通信,那么我们可以设置一个timeout值,来检测是否超时,并作出相应的异常...
    最近实验室的网络状况不太稳定,信息采集程序经常阻塞在通信时的recv()处,Python的urllib2/mechanize库在做HTTP访问时,是用socket方式进行通信,那么我们可以设置一个timeout值,来检测是否超时,并作出相应的异常处理。 
    


    异常处理的几个片段代码如下:

    import socket
    import urllib2
    try:
        resp = urllib2.urlopen(req, timeout=32)
    except urllib2.URLError, e:
        print "Bad URL or timeout"
        #处理异常
    except socket.timeout, e:
        print "socket timeout"
        #处理异常

    import urllib2
    import socket
    #In Python 2.7.3
    class MyException(Exception):
        pass
    
    try:
        urllib2.urlopen("http://example.com", timeout = 32)
    except urllib2.URLError as e:
        print type(e)    #not catch
    except socket.timeout as e:
        print type(e)    #catched
        raise MyException("There was an error: %r" % e)

    下面这部分代码是stackoverflow.com的 dbr所写,感谢他的帮助!

    import urllib2
    import socket
    
    class MyException(Exception):
        pass
    
    try:
        urllib2.urlopen("http://example.com", timeout = 1)
    except urllib2.URLError, e:
        # For Python 2.6
        if isinstance(e.reason, socket.timeout):
            raise MyException("There was an error: %r" % e)
        else:
            # reraise the original error
            raise
    except socket.timeout, e:
        # For Python 2.7
        raise MyException("There was an error: %r" % 

    下面是关于使用mechanize库的open方法(函数)时,捕获超时异常的代码,感谢stackoverflow.com中RoadieRich的帮助

    (If you're using Python 2.6 or better, and a correspondingly updated version of mechanize, mechanize.urlopen should accept a timeout=... optional argument which seems to be what you're looking for... 具体地址: http://stackoverflow.com/questions/3552928/how-do-i-set-a-timeout-value-for-pythons-mechanize)

    片段代码如下:

    tried=0
    connected = False
    while not Connected:
        try:
            r = b.open('http://www.google.com/foobar', timeout=32)
            connected = true # if line above fails, this is never executed
        except mechanize.HTTPError as e:
            print e.code            
            tried += 1        
            if tried > 4:
                exit() 
            sleep(30)
    
        except mechanize.URLError as e:
            print e.reason.args            
            tried += 1
            if tried > 4:
                exit()        
            sleep(30)




    展开全文
  • Python中mechanize库的简单使用说明

    千次阅读 2013-06-28 14:06:43
    与urllib、urllib2类似,用一个简单的例子说明它的使用: #!/usr/bin/env/ python #coding=utf-8 import mechanize import cookielib # Cookie Jar cj = cookielib.LWPCookieJar() # Browser br = ...

    该库与urllib、urllib2类似,用一个简单的例子说明它的使用:

    #!/usr/bin/env/ python
    #coding=utf-8
    import mechanize
    import cookielib
    
    # Cookie Jar
    cj = cookielib.LWPCookieJar()
    
    # Browser
    br = mechanize.Browser()
    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 > 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 (http header)
    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/4.0.0')]
    
    # HTTP access and get response pack
    br.open("http://blog.csdn.net/cnmilan")
    print br.response().read().decode("utf-8")

    展开全文
  • Mechanize库用于自动与网站进行交互。 Mechanize自动存储和发送Cookie,遵循重定向,并可以遵循链接和提交表单。 可以填写和提交表单字段。 机械化还可以将您曾经访问过的站点作为历史记录进行跟踪。 依存关系 Ruby>...
  • Mechanize¶↑docs.seattlerb.org/mechanize github.com/sparklemotion/mechanize描述¶↑Mechanize库用于自动与网站交互。 Mechanize自动存储和发送coo Mechanize¶↑docs.seattlerb.org/mechanize github....
  • python第三方-mechanize

    2018-09-10 17:56:46
    用python成为顶级黑客,第三方必备,mechanize网络爬虫
  • mechanize

    2016-05-22 11:41:04
    mechanize-python模拟登陆神器

    先来说一下我们学校查询打卡的网站:
    一个栗子

    可以看到,想要获得打卡次数,首先需要登录
    我们可以用python做一个小小的爬虫来获得打卡次数。
    那么问题来了,Python如何模拟登录呢?

    比较传统的方法是用抓包分析提交的数据,这里就不说了,网上有很多例子. 但是,分析包和网页代码有时候很麻烦(有些网站提交的表单数据需要经过复杂的加密,比如QQ空间).
    经过一番寻找尝试,我发现了mechanize 这个库,可以说是Python模拟登录的一把利剑
    这是官方网址: https://pypi.python.org/pypi/mechanize/

    既然趁手的兵器有了,接下来就可以开工了(需要了解的知识有正则表达式,Python编码等, 即使不知道也可以看懂大部分代码)

    思路很简单, 就是:
    打开网站->检测表单->输入账号密码->提交表单->登录成功->抓取所需要的信息(正则 or BeautifulSoup)

    关于正则表达式可以参看这个网站: https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx

    完整的代码如下:

    # -*- coding: cp936-*-
    import mechanize  #就是它!
    import cookielib
    import urllib
    import re
    
    def getS(html): #利用正则抓取网页
        #这里可以定义一个抓取信息的函数,至于抓啥就写啥咯
    
    br =mechanize.Browser()
    ##关联cookies
    cj =cookielib.LWPCookieJar()
    br.set_cookiejar(cj)
    
    #1-2的内容就是mechanize的强大之处,mechanize可以检测到表单,并可以通过输出表单内容来选择需要填写的表单
    
    #-----------------------------------------------------------------------------1---------------------------------------------------------------------------------
    
    ## 设置一些参数,因为是模拟客户端请求,所以要支持客户端的一些常用功能
    br.set_handle_equiv(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)
    
    ## 这个是degbug ## 可以看到执行过程,对调试代码有帮助
    #br.set_debug_http(True)
    #br.set_debug_redirects(True)
    #br.set_debug_responses(True)
    
    br.addheaders =[('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.11)Gecko/20100701 Firefox/3.5.11')]##模拟浏览器头
    response =br.open('******') #需要登录的那个网站
    
    #输出登录所有需要填写的表单并打印 ,便于下一步的选择       
    for f in br.forms():
        print f
    
    br.select_form(nr=0) #根据上一步选择对应的表单
    
    u=raw_input('输入账号\n')
    print ''
    p=raw_input('输入密码\n')
    try:
        br.form['username'] = u #模拟填写表单'username'(这个表单的名字也是来源于输出表单那一步,括号里就是表单名了,有个=号记得要省去)
        br.form['password'] = p #同上
        br.submit() ##模拟按钮提交表单
        print ''
        html=br.response().read()#获取登录后的网页源码,其实这也是验证是否登录成功的方法之一
        getS(html)
    #----------------------------------------------------------------------------2---------------------------------------------------------------------------------
    except:
        print '账号密码不相符!!\n'  #抛出账号密码错误
    

    总结:
    mechanize省去了抓包的过程,跳过了大部分分析网页代码的过程. 但是mechanize也有一个很大的缺点,有些网页的表单它是检测不到的,
    这时候只能通过一般方法获取登录所需要的东西,相对使用mechanize要复杂不少.

    若文章有误, 请指出, 感激不尽

    展开全文
  • python 使用mechanize进行web网页交互

    千次阅读 2015-07-16 20:55:02
    1. 有状态的网页 所谓有状态的网页就是区别于传统html的动态交互式页面,它与用户进行交互显示不同的结果。...2. 使用python中mechanize库进行处理 使用mechanize库需要注意以下几个特点:   mechanize自动处理co

    1. 有状态的网页

      所谓有状态的网页就是区别于传统html的动态交互式页面,它与用户进行交互显示不同的结果。下面我以新浪邮箱的登陆界面为例:
      maillogin
      上面有一个用户登陆的表单,当我们输入正确地用户名密码之后,登陆成功转向邮箱操作窗口,否则给出错误信息。


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

    login

      从结果上看,已经成功登陆上去了。

    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>>>
    >>>

    re

    展开全文
  • Mechanize自动存储和发送Cookie,跟随重定向,跟随链接并提交表单。 可以填写和提交表单字段。 机械化还可以将您曾经访问过的站点作为历史记录进行跟踪。 入门 在根文件夹中,您可以运行get_page示例: node ...
  • Mechanize 一个让自动化web交互变得容易的ruby
  • 闲时学习了一下Mechanize库。这是一个用于Web自动交互的lib。可以自动存储cookie,重定向,提交表单等等。详细信息参见http://mechanize.rubyforge.org/mechanize/。  作为学习成果,写一个关于开心网组件《大师》...
  • multi-mechanize负载压力

    千次阅读 2016-07-12 11:54:15
    mechanize是一个模拟browser行为的一个,当然你也可以用其它的如urllib2、request、tornado.httpclient等等,不是必须。后面两个numpy和matplotlib也是可选的,当你需要它自动生成图形化报表时才会
  • 使用基本的 Python 模块,可以编写脚本来与 Web 站点交互,但是如果没有必要的话,那么您就不希望这样做。...然而,当您希望与 Web 页面中找到的内容进行某种比较复杂的交互时,您需要使用mechanize库...
  • multi-mechanize

    2015-12-23 09:46:00
    1. 安装 万能的pip&easy_install(python27环境) ...mechanize是一个模拟browser行为的一个,当然你也可以用其它的如urllib2、request、tornado.httpclient等等,不是必须。 后面两个numpy和matp...
  • python使用mechanize

    千次阅读 2012-11-30 17:02:37
    请通过以下URL安装mechanize模块: http://wwwsearch.sourceforge.net/mechanize/download.html 上面有下载链接及详细的安装方法,简单介绍下,一共有两种: easy_install经典安装 easy_install:先安装...
  • 使用基本的 Python 模块,可以编写脚本来与 Web 站点交互,但是如果没有必要的话,那么您就不希望...然而,当您希望与 Web 页面中找到的内容进行某种比较复杂的交互时,您需要使用mechanize库(参见参考资料获得下...
  • python mechanize使用

    千次阅读 2018-05-15 17:20:49
    遇到了一些坑,这个mechanize不支持js代码,如果遇到了&lt;button id="submit" type="button" onclick="sign(this,'signin')" class="btn btn-banner mt10"&gt;提 交...
  • 机械化 警告:极端 ALPHA 质量代码 包 mechanize 实现了 Perl5 的 WWW::Mechanize 风格的 HTTP 客户端,它模仿了一个真实的 web 浏览器,在解析相对 URL 等方面。... 这个的存在是因为我有一些想抓挠的痒。
  • Mechanize对WEB的操作

    2016-03-07 11:10:49
    通过Mechanize模拟自然的浏览器行为来完成与网页之间的交互.  # Mechanize的安装  Mechanize的安装请查看 -> Ruby library的安装  # 使用Mechanize时,需要在脚本头部注明  require 'mechanize
  • MechanicalSoup自动存储和发送cookie,...MechanicalSoup由M Hickford创建,他是Mechanize库的忠实用户。 不幸的是,Mechanize直到2019年才与Python 3不兼容,并且其开发停滞了数年。 MechanicalSoup提供了类似的API,
  • MechanicalSoup 是由 M Hickford 创建的,他是 Mechanize 的忠实用户。 不幸的是,直到 2019 年,Mechanize 才与 Python 3 不兼容,并且其开发停滞了好几年。 MechanicalSoup 提供了一个类似的 API,建立在 ...
  • python模块介绍- multi-mechanize 通用的性能测试工具 简介 Multi-Mechanize 是一个开源的性能和负载测试框架,它并发运行多个Python脚本对网站或者服务生成负载(组合事务)。测试输出报告保存为HTML或JMeter的...
  •  源地址:http://www.ibm.com/developerworks/cn/linux/l-python-mechanize-beautiful-soup/ 使用基本的 Python 模块,可以 编写脚本来与 Web 站点交互,但是如果没有必要的话,那么您就不希望这样...
  • 1、使用Mechanize库上网: Mechanize库的Browser类允许我们对浏览器中的任何内容进行操作。 #!/usr/bin/python #coding=utf-8 import mechanize def viewPage(url): browser = mechanize.Browser() ...
  • mechanize是一个模拟browser行为的一个,当然你也可以用其它的如urllib2、request、tornado.httpclient等等,不是必须。 后面两个numpy和matplotlib也是可选的,当你需要它自动生成图形化报表时才会用到,安装...
  • mailmech 有两部分: mailmech.rb 是,由前端 list.rb 使用 当前选项列表 Usage: lists.rb [options] -a, --add a,b,c Subscribe list or FILE (csv: email,company) -c, --company STRING Company -...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,035
精华内容 414
关键字:

mechanize库