【发布时间】:2014-07-29 06:03:47
【问题描述】:
我正在使用 Mechanize 进行一些简单的网页抓取。
在一个网页中,我有几个表单,这些表单没有 id 或 name。
我知道如何区分表单的唯一方法是使用名称为 a 的隐藏输入字段。
我如何以此为标准来选择正确的表格?
【问题讨论】:
标签: ruby forms web-scraping screen-scraping mechanize
我正在使用 Mechanize 进行一些简单的网页抓取。
在一个网页中,我有几个表单,这些表单没有 id 或 name。
我知道如何区分表单的唯一方法是使用名称为 a 的隐藏输入字段。
我如何以此为标准来选择正确的表格?
【问题讨论】:
标签: ruby forms web-scraping screen-scraping mechanize
尝试手动选择:
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'}} 那么你就不需要最后一行了。
你可以像这样使用Form#has_field?:
form = page.forms.find{|f| f.has_field? 'a'}
【讨论】: