`
zealot2007
  • 浏览: 10771 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

自动化web交互类库Mechanize

阅读更多

   闲时学习了一下Mechanize库。这是一个用于Web自动交互的lib。可以自动存储cookie,重定向,提交表单等等。详细信息参见http://mechanize.rubyforge.org/mechanize/。

    作为学习成果,写一个关于开心网组件《大师》的小外挂。闲话少说,献上代码,以抛砖引玉。

 

登录:

require 'rubygems'
require 'mechanize'
require 'json/pure'

agent=WWW::Mechanize.new
login=agent.get("http://www.kaixin001.com")
f=login.forms.first
f.email="youremail@website.com"
f.password="yourpwd"
f.submit

 

跳到大师首页,获取可以比武的好友:

pk = agent.get("http://www.kaixin001.com/!pker/index.php?t=50")
div = pk.search("dl/div")[0]
avs = div.search("dd").select {|d|
  d.search("div/img")[1][:src].include?("icon_blank.gif")  #匹配没有“满”或“师”标记的行
}

 

和每个好友比武:

#获得每个好友比武的链接
links = avs.collect { |a|
  WWW::Mechanize::Page::Link.new(a.search("div/a")[0], agent, pk)
}
current_kungfu = nil #current_kungfu用于存储你的当前武功类别

links.collect {|link| 
  link.href.to_s.scan(/(\d+)/)[0][0] 
}.each {|fid|  
  
#current_kungfu选择你当前最高的武功类别,选择最强的武功自然胜算高嘛:)
  if current_kungfu.nil?
    selkungfu = agent.get("http://www.kaixin001.com/!pker/!selkungfu.php?fuid=#{fid}")
    #    f = selkungfu.form("form1")
    current_kungfu = selkungfu.body.scan(/value=\"\d+\"/).collect { |input|
      input.split("=")[1][1..-2].to_i
    }.sort.[](-1)    
  end

  #get pkid 获得一次pk的id参数
  pkid_page = agent.post("http://www.kaixin001.com/!pker/!startpk.php",:fuid => fid)
  pkid= ::JSON.parse(pkid_page.body)["pkid"]
  #
  agent.get("http://www.kaixin001.com/!pker/!dopk.php?fuid=#{fid}&pkid=#{pkid}&flag=0&kfid=#{current_kungfu}")

}

 

退出:

agent.get("http://www.kaixin001.com/login/logout.php")
 

 

 

3
0
分享到:
评论

相关推荐

    Ruby-Mechanize一个让自动化web交互变得容易的ruby库

    Ruby-Mechanize是一个强大的...总之,Ruby-Mechanize是一个强大而灵活的工具,它极大地简化了Web自动化和爬虫开发的过程。无论是处理简单的页面导航还是执行复杂的交互任务,Mechanize都能帮助开发者高效地完成工作。

    Mechanize是一个ruby库,可以轻松实现自动的Web交互。-Ruby开发

    Mechanize¶↑docs.seattlerb.org/mechanize github.com/sparklemotion/mechanize描述¶↑Mechanize库用于自动与网站交互。 Mechanize自动存储和发送coo Mechanize¶↑docs.seattlerb.org/mechanize github....

    mechanize:Common Lisp 中的自动化 Web 交互

    Mechanize 是一个用于自动化 Web 交互的工具,最初是用 Perl 编写的,但在这里我们关注的是其在 Common Lisp 中的实现。这个“mechanize”项目可能是对 Perl 版本的复现或改进,旨在为 Lisp 社区提供相同的 Web 自动...

    mechanize:Mechanize是一个ruby库,可以轻松实现自动的Web交互

    机械化描述Mechanize库用于自动与网站进行交互。 Mechanize自动存储和发送Cookie,遵循重定向,并可以遵循链接和提交表单。 可以填写和提交表单字段。 机械化还可以将您曾经访问过的站点作为历史记录进行跟踪。依存...

    mechanize-js:Mechanize是一个Javascript库,可实现自动Web交互

    机械化 机械化模块用于自动与网站进行交互。 Mechanize自动存储和发送Cookie,跟随重定向,跟随链接并提交表单。 可以填写和提交表单字段。 机械化还可以将您曾经访问过的站点作为历史记录进行跟踪。入门在根文件夹...

    Mechanize相关资料

    总之,Mechanize是Python Web爬虫和自动化测试领域中不可或缺的工具之一,其强大的功能和易用性使其在处理网站交互任务时具有很高的效率。如果你想要提升这方面的能力,这个“Mechanize相关资料”压缩包将是一份宝贵...

    ruby mechanize安装需要的gem包

    Ruby Mechanize 是一个非常强大的 Ruby 库,用于自动化与网站的交互,比如模拟浏览器操作、填写表单、点击链接等。在使用 Ruby Mechanize 之前,首要任务是正确安装其依赖的 gem 包。以下是对 Ruby Mechanize 安装...

    mechanize-源码.rar

    通过使用mechanize,开发者可以编写程序自动执行一系列Web交互,比如登录网站、搜索信息、甚至执行复杂的用户操作流程。这在数据爬取、自动化测试和模拟用户行为的场景中尤为有用。 在源代码中,我们可以看到...

    python mechanize 0.2.5

    Python Mechanize是一个强大的库,主要用于自动化Web浏览,它在Python编程中扮演着重要角色,尤其在Web爬虫和网页测试领域。Mechanize库模仿浏览器的行为,允许开发者以编程方式与网页交互,如填写表单、点击链接、...

    multi-mechanize-master

    `mechanize`库是一个模拟浏览器行为的库,它可以帮助开发者编写自动化脚本,用于浏览网页、填写表单、点击链接等任务,非常适合进行网页抓取和数据提取。在这个"multi-mechanize-master"项目中,重点是将`mechanize`...

    Python库 | mechanize-0.3.2-py2-none-any.whl

    总之,mechanize是Python开发者实现自动化网页交互和爬虫任务的一个强大工具,尤其适用于处理需要登录、表单提交等交互的场景。通过下载并安装mechanize-0.3.2-py2-none-any.whl文件,开发者可以快速地将此库集成到...

    WWW-Mechanize-Chrome:自动化Chrome浏览器

    **WWW-Mechanize-Chrome** 是一个Perl模块,它扩展了流行的WWW-Mechanize库,使其能够模拟用户在Google Chrome浏览器中...通过学习和掌握这个库,你可以提升你的Web自动化测试和数据抓取能力,节省大量手动操作的时间。

    mechanize-2.7.3.gem

    ruby mechanize包,mechanize-2.7.3.gem

    使用Perl进行Web / HTTP自动化

    标题“使用Perl进行Web / HTTP自动化”涉及到的关键技术领域是使用Perl编程语言来实现网络和HTTP操作的自动化。Perl是一种强大的脚本语言,常用于文本处理、系统管理以及网络编程等任务。在这个主题中,我们将深入...

    ruby mechanize 2.7.2 gem 包

    ruby mechanize 2.7.2 gem 包

    mechanize4j源程序及所有依赖的jar

    **机械师4j(mechanize4j)**是一个基于Java的开源爬虫库,它为Web自动化提供了方便。在编程领域,爬虫是用于自动抓取网页信息的工具,而mechanize4j则是这类工具的一个实现。该库模仿了Python的mechanize库,使得...

    Robot Framework 源代码阅读笔记 之 一 - CSDN博客

    首先,作者提到了Robot Framework的一些基础测试库,如selenium-webUI自动化测试、splinter-webUI测试工具等。Selenium是一个用于Web应用程序测试的工具,它可以将测试脚本在多种浏览器上进行自动运行,而splinter是...

    python第三方库-mechanize

    用python成为顶级黑客,第三方库必备,mechanize网络爬虫

    MechanicalSoup 一个用于自动与网站交互的Python库-python

    一个用于自动与网站交互的Python库, MechanicalSoup自动存储和发送cookie,遵循重定向,并可以跟随链接并提交表单。主页 https://mechanicalsoup.readthedocs.io/ 概述 用于自动与网站交互的 Python 库。 ...

Global site tag (gtag.js) - Google Analytics