【问题标题】:Pick the correct form from Mechanize results via CSS selector通过 CSS 选择器从 Mechanize 结果中选择正确的形式
【发布时间】:2015-09-05 12:38:45
【问题描述】:

所以我使用 Mechanize 来获取页面的表单列表。表单标识因网站而异,所以我需要更稳定的东西,例如选择器。

有没有一种方法可以使用简单的 CSS 选择器从 Mechanize 提供的表单列表中选择正确的表单?

【问题讨论】:

    标签: ruby forms nokogiri mechanize


    【解决方案1】:

    是的。 Mechanize 返回的页面对象是一个 Nokogiri 文档,因此您可以使用 Nokogiri 的所有方法在 DOM 中查找节点。

    searchat 是通用方法,它们都采用 CSS 或 XPath 选择器。 at 等价于 search('some selector').first。在需要查找节点的绝大多数情况下,我都会使用这两个。还有 cssxpath 是特定于选择器类型的,它们的 at 等效于 at_cssat_xpath

    考虑这段代码:

    require 'mechanize'
    
    agent = Mechanize.new
    page = agent.get('http://www.example.net')
    page.class # => Mechanize::Page
    page.at('title').class # => Nokogiri::XML::Element
    page.at('title').text # => "Example Domain"
    

    此示例获取页面的<title>,但您可以轻松地插入如何从您正在使用的 DOM 中获取特定表单。

    【讨论】:

      【解决方案2】:

      您可以使用form_node 方法将表单与<form> 元素匹配:

      form = page.forms.find{|f| f.form_node == page.at('[name=f]')}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-17
        • 1970-01-01
        • 1970-01-01
        • 2013-09-07
        • 2015-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多