【发布时间】:2016-09-15 18:11:31
【问题描述】:
我正在编写一个脚本来爬取搜索结果页面,并且我创建了一个循环来查找正确的搜索结果,并且它有效。我遇到的问题是尝试单击 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")
相关的 LI 元素(我删除了看起来不相关的无关代码,如有必要我可以添加更多我只是不想过度发布)
<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>
【问题讨论】:
-
你能提供更多关于它如何不起作用的细节吗?您是否看到特定错误?如果没有,你想得到什么结果,现在它给了你什么?
-
@StevenSchobert 它目前返回 NIL。这个版本的代码是我没有想法的地方,我不想去'@page',因为我遇到了深入到正确的 LI 元素的麻烦,我不知道如何找到仅该元素内的链接并单击它。
-
欢迎来到 Stack Overflow。请阅读“How to Ask”及其链接页面和“minimal reproducible example”。您要求我们想象您尝试导航的 HTML。相反,将其减少到绝对的最低限度,并将其添加到适当格式化的问题中。这将帮助我们使用与您相同的输入来工作。此外,使用该 HTML 重新创建演示问题的最少代码。目前您的问题包含与任何内容无关的代码,我们将不得不拼凑 HTML 来测试这会浪费我们的时间。
-
@RyanStone 您是否尝试获取所有链接页面或仅在页面的某个子部分下的所有链接。
-
@TallPaul 只是小节。具体的用例是制造商没有提供我公司的产品数据,我需要一周的时间手动输入数据。我正在构建它来抓取和抓取数据。我正在输入零件号,另一个未显示的函数找到了正确的搜索结果 LI,我需要单击该元素中的链接。