【问题标题】:How to select form using Mechanize based on the fields it has?如何根据其具有的字段使用 Mechanize 选择表单?
【发布时间】:2014-07-29 06:03:47
【问题描述】:

我正在使用 Mechanize 进行一些简单的网页抓取。

在一个网页中,我有几个表单,这些表单没有 id 或 name。

我知道如何区分表单的唯一方法是使用名称为 a 的隐藏输入字段。

我如何以此为标准来选择正确的表格?

【问题讨论】:

    标签: ruby forms web-scraping screen-scraping mechanize


    【解决方案1】:

    尝试手动选择:

    require 'mechanize'
    
    agent = Mechanize.new
    
    page = agent.get('http://somesite.com/')
    forms = page.forms.select {|form| form.fields.any? {|field| field.name == 'a' && field.type == 'hidden'}}
    form = forms[0] unless forms == []
    

    【讨论】:

    • form = page.forms.find {|form| form.fields.any? {|field| field.name == 'a' && field.type == 'hidden'}} 那么你就不需要最后一行了。
    【解决方案2】:

    你可以像这样使用Form#has_field?

    form = page.forms.find{|f| f.has_field? 'a'}
    

    【讨论】:

      猜你喜欢
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-14
      • 2011-12-17
      相关资源
      最近更新 更多