单击Ruby Mechanize

时间:2016-09-15 18:11:32

标签: ruby nokogiri mechanize

我正在编写一个脚本来抓取搜索结果页面,并且我创建了一个循环来查找正确的搜索结果并且这样做有效。我遇到的问题是,尝试点击LI元素内的链接的每个排列都不起作用。起初我尝试在LI中找到锚,但它是一个nokogiri对象,我已经尝试进入@page并深入到正确的元素,但它回来没有。

有没有办法在LI元素中搜索我已经深入研究过的?

require 'mechanize'
require 'nokogiri'
require 'csv'

@agent = Mechanize.new do |agent|
    agent.user_agent_alias = 'Mac Safari'
end
@page = @agent.get('https://www.milwaukeetool.com/search-results?FullTextKeywords=48-42-5540')

def resultsPageSearcher (searchText)
  @page.search('#results ul > li').each do |li|
    results_sku = li.css('span.results-sku').text
    if results_sku == searchText
            link = @page.link_with(:text => results_sku)
      @page = link.click
    end
  end
end

resultsPageSearcher("48-42-5540")

Relevent LI Element(我删除了看似无关的无关代码,如果有必要,我可以添加更多内容,我只是不想过度发布)

<li>
    <a href="/accessories/cutting/48-42-5540" class="results-image">
      <img src="//cdn.milwaukeetool.com/~/media/Images/Accessories/Cutting/48-42-5540/21867_48-42-5540.jpg?h=100&amp;thn=1&amp;w=100" alt=""></a>
    <a class="results-title" href="/accessories/cutting/48-42-5540">4" 10 TPI High-Carbon Steel Jig Saw Blade (5 PK)</a>            
    <span class="results-sku">48-42-5540</span>
</li>

1 个答案:

答案 0 :(得分:0)

所以我前几天找到了一个非常酷的图书馆,我认为这会帮助你解决这个问题。它将转到您提供的链接,然后搜索包含所需文本的链接并单击它。如果您遇到问题请告诉我。

require 'watir'
require 'headless'
require 'csv'

headless = Headless.new
headless.start
browser = Watir::Browser.new
browser.goto('https://www.milwaukeetool.com/search-results?FullTextKeywords=48-42-5540')
browser.link(text: searchText).when_present.click