在 Ruby Mechanize 的 .each 循环中单击 Link
Click Link within .each loop in Ruby Mechanize
我正在编写一个脚本来抓取一页搜索结果,我已经创建了一个循环来查找正确的搜索结果并且可以正常工作。我 运行 遇到的问题是尝试单击 LI 元素内的 link 的每个排列都不起作用。起初我尝试在 LI 中找到锚点,但它是一个 nokogiri 对象,我尝试进入 @page
并向下钻取到正确的元素,但它返回 nil。
有没有办法在我已经深入到的 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")
相关 LI 元素(我删除了看起来不相关的无关代码,如果需要我可以添加更多我只是不想超过 post)
<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>
因此,前几天我发现了一个非常酷的库,我认为它可以帮助您解决这个问题。它将转到您提供的 link,然后搜索包含您想要的文本的 link 并单击它。如果您对此有任何疑问,请告诉我。
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
我正在编写一个脚本来抓取一页搜索结果,我已经创建了一个循环来查找正确的搜索结果并且可以正常工作。我 运行 遇到的问题是尝试单击 LI 元素内的 link 的每个排列都不起作用。起初我尝试在 LI 中找到锚点,但它是一个 nokogiri 对象,我尝试进入 @page
并向下钻取到正确的元素,但它返回 nil。
有没有办法在我已经深入到的 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")
相关 LI 元素(我删除了看起来不相关的无关代码,如果需要我可以添加更多我只是不想超过 post)
<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>
因此,前几天我发现了一个非常酷的库,我认为它可以帮助您解决这个问题。它将转到您提供的 link,然后搜索包含您想要的文本的 link 并单击它。如果您对此有任何疑问,请告诉我。
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