我正在编写一个脚本来抓取搜索结果页面,并且我创建了一个循环来查找正确的搜索结果并且这样做有效。我遇到的问题是,尝试点击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&thn=1&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>
答案 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