0 0

如何使用mechanize,模拟form输入?3

有一段mechanize的教程代码
require 'rubygems'
require 'mechanize'
agent = WWW::Mechanize.new
page = agent.get('http://www.google.com.hk/')
google_form = page.form('f')
google_form.q = 'ruby mechanize'
page = agent.submit(google_form)
pp page

这段代码模拟手工在google搜索框中输入ruby mechanize,按下回车键后,得到的搜索结果。
我仔细琢磨了这段代码,重点在google_form.q = 'ruby mechanize',
当你把下面几句输入后,
require 'rubygems'
require 'mechanize'
agent = WWW::Mechanize.new
page = agent.get('http://www.google.com.hk/')

可以得到其中一段:
=> #<WWW::Mechanize::Form
{name "f"}
{method "GET"}
{action "/search"}
{fields
  #<WWW::Mechanize::Form::Field:0xb73c16b4 @name="hl", @value="zh-CN">
  #<WWW::Mechanize::Form::Field:0xb73c12cc @name="source", @value="hp">
  #<WWW::Mechanize::Form::Field:0xb73c10d8 @name="ie", @value="GB2312">
  #<WWW::Mechanize::Form::Field:0xb73c0b10 @name="q", @value="">}
{radiobuttons}
{checkboxes}
{file_uploads}
{buttons
  #<WWW::Mechanize::Form::Button:0xb73c0638
   @name="btnG",
   @value="Google 搜\347\264\242">
  #<WWW::Mechanize::Form::Button:0xb73c03cc
   @name="btnI",
   @value=" 手气不错\302\240">}>

注意   {name "f"}
  #<WWW::Mechanize::Form::Field:0xb73c0b10 @name="q", @value="">}
根据这个线索,写下
google_form = page.form('f')
google_form.q = 'ruby mechanize'
整个模拟google搜索ruby mechanize的代码就出来了,
require 'rubygems'
require 'mechanize'
agent = WWW::Mechanize.new
page = agent.get('http://www.google.com.hk/')
google_form = page.form('f')
google_form.q = 'ruby mechanize'
page = agent.submit(google_form)
pp page

现在,我想模拟在http://www.flvcd.com/的搜索框,输入
http://hd.openv.com/tv_play-hddoc_20100607_7217133.html

问题来了,先模拟示范代码的前半部分。

require 'rubygems'
require 'mechanize'
agent = WWW::Mechanize.new
page = agent.get('http://www.flvcd.com/')
得到下面的结果
  {name "mainform"}
   {method "GET"}
   {action ""}
   {fields
    #<WWW::Mechanize::Form::Field:0xb7340bb8 @name="flag", @value="">
    #<WWW::Mechanize::Form::Field:0xb734099c @name="format", @value="">
    #<WWW::Mechanize::Form::Field:0xb73407d0 @name="kw", @value="">}
   {radiobuttons}
   {checkboxes}
   {file_uploads}
   {buttons
    #<WWW::Mechanize::Form::Button:0xb7340654
     @name="sbt",
     @value="开始GO!">}>}>

我只能写出一句
flvform = page.form('mainform')
flvform.? = 'http://hd.openv.com/tv_play-hddoc_20100607_7217133.html'
这个?问号的地方,填写什么都不行,flag,format,kw

请问,如何完成我这个模拟输入的问题?

问题补充:require 'rubygems'
require 'mechanize'
agent = Mechanize.new
page =agent.post('http://forum.ubuntu.org.cn/ucp.php?mode=login&sid=d6179312144b3f8cf843d61b0ba409ca')
uform = page.forms[1]
uform.username = '罗非鱼'
uform.password = 'qwerty'
uform.action = 'http://forum.ubuntu.org.cn/ucp.php?mode=login'
page = agent.submit(uform)
page.save('/home/pt/ubuntu')
我写出了上面的程序,但是运行后,打开/home/pt/ubuntu文件,发现根本就没有模拟登录成功,请您看看。
谢谢
2010年6月12日 19:47

1个答案 按时间排序 按投票排序

0 0

不行是什么样意思?你的出错信息呢?

2010年6月14日 16:40

相关推荐

    在Python中使用mechanize模块模拟浏览器功能

    mechanize模块是一个强大的工具,它提供了模拟浏览器的功能,包括处理表单提交、跟踪cookies和设置代理等。下面我们将详细探讨mechanize模块的使用方法。 首先,引入必要的库: ```python import mechanize import ...

    ruby mechanize安装需要的gem包

    安装完成后,可以开始使用 Mechanize 编写脚本来模拟浏览器操作。例如,下面的代码片段展示了如何打开一个网页,查找特定元素并点击: ```ruby require 'mechanize' agent = Mechanize.new page = agent.get...

    Mechanize相关资料

    你可以通过`find_form()`找到特定的表单,然后使用`set_field()`设置字段值,最后使用`submit()`来提交表单。 3. **Cookie管理**:它能自动处理服务器返回的cookies,并在后续请求中发送出去,保持会话状态。 4. *...

    multi-mechanize-master

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

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

    让我们深入了解一下Mechanize库的核心功能和使用方法。 首先,Mechanize库提供了一个友好的API,可以方便地打开URL、导航页面和处理HTTP请求。通过`Mechanize.new`创建一个新的实例后,你可以使用`get`方法来访问...

    mechanize-2.7.3.gem

    ruby mechanize包,mechanize-2.7.3.gem

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

    - **处理表单**:可以使用`br.forms()`列出所有表单,通过`br.select_form(nr=0)`选择一个表单,并使用`form['key'] = 'value'`设置表单字段。提交表单使用`br.submit()`。 - **导航**:`br.back()`方法用于模拟...

    mechanize-源码.rar

    在Python的世界里,mechanize库是一个强大的工具,专为模拟浏览器行为而设计,尤其适用于自动化Web浏览和数据抓取任务。"mechanize-源码.rar"这个压缩包文件包含了mechanize库的源代码,这对于想要深入了解其工作...

    ruby mechanize 2.7.2 gem 包

    ruby mechanize 2.7.2 gem 包

    Ruby中的Mechanize的使用教程

    Ruby中实现网页抓取,一般用的是mechanize,使用非常简单。 安装 代码如下: sudo gem install mechanize 抓取网页 代码如下: require ‘rubygems’ require ‘mechanize’ agent = Mechanize.new page = agent.get...

    python mechanize 0.2.5

    Python Mechanize是一个强大的库,主要用于自动化Web浏览,它在Python编程中扮演着重要角色,尤其在Web...在实际项目中,Python Mechanize常与其他库(如BeautifulSoup、requests等)结合使用,以增强其功能和灵活性。

    python第三方库-mechanize

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

    mechanize4j源程序及所有依赖的jar

    该库模仿了Python的mechanize库,使得Java开发者也能轻松进行网页抓取和模拟浏览器行为。 **mechanize4j的核心功能**: 1. **HTTP交互**:mechanize4j能够发送GET和POST请求,处理表单提交,支持HTTP和HTTPS协议,...

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

    使用mechanize库时,需要注意以下几点: - 它不支持JavaScript,因为它是基于HTTP协议的,无法执行客户端的JavaScript代码。对于依赖JavaScript的网页,可能需要结合其他工具,如Selenium。 - 网站的反爬虫策略:...

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

    **WWW-Mechanize-Chrome** 是一个Perl模块,它扩展了流行的WWW-Mechanize库,使其能够模拟用户在Google Chrome浏览器中的交互行为。这个工具对于自动化网页浏览、数据抓取、测试以及任何需要与网页进行复杂交互的...

    Ruby中使用mechanize批量下载校内网相册照片

    1. **初始化**: 脚本首先通过`initialize`方法创建一个新的Mechanize实例,该实例用于模拟浏览器行为。它访问校内网主页并提交登录表单,其中包含用户提供的电子邮件(e)和密码(p)。 ```ruby def initialize(e, ...

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

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

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

    机械化描述Mechanize库用于自动与网站进行交互。 Mechanize自动存储和发送Cookie,...开发者使用捆绑程序安装依赖项: bundle install使用以下命令运行所有测试: bundle exec rake test另请参阅Mechanize :: TestCa

Global site tag (gtag.js) - Google Analytics