【问题标题】:NoMethodError: ruby gem mechanize undefined method 'q= 'NoMethodError: ruby​​ gem mechanize undefined method 'q='
【发布时间】:2013-06-09 23:40:51
【问题描述】:

我正在尝试为 Amazon 构建一个网络抓取程序,但我在第一步就被绊倒了。我这样写我的代码,只是开始四处逛逛并访问亚马逊和漂亮页面,所以我知道如何继续:

require 'rubygems'
require 'mechanize'

agent = Mechanize.new

page = agent.get('http://www.amazon.com/')

page_form = page.form('site-search')

page_form.q = 'Intermediate Microeconomics'

page = agent.submit(page_form, page_form.buttons.first)

pp page

我不断收到此错误消息:

/Users/samsunknight/.rvm/gems/ruby-2.0.0-p195/gems/mechanize-2.7.1/lib/mechanize/form.rb:217:in `method_missing': undefined method `q=' for #<Mechanize::Form:0x007f9a13012660> (NoMethodError)
        from webscraperattempt1.rb:7:in `<main>'

我已经从 google.com 的示例中改编了这段代码,它可以无缝地用于 agent.get('www.google.com')page.form('f'),所以我认为问题在于 page.form('site-search'),但是当我 pp page 为 www .amazon.com,“site-search”出现在与“f”在 google 中完全相同的位置。

我做错了什么? / 我该如何解决?

【问题讨论】:

    标签: ruby web-scraping mechanize


    【解决方案1】:

    试试这个

     page_form['q'] = 'Intermediate Microeconomics'
    

    【讨论】:

      【解决方案2】:

      q 是 google 表单上的字段名称。在亚马逊形式上,它是另一回事。

      【讨论】:

        【解决方案3】:

        尝试使用 'field-keywords' 更改 q,如下所示: page_form['field-keywords'] = 'Intermediate Microeconomics'

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多