【发布时间】:2020-03-06 02:14:50
【问题描述】:
我正在使用 Nokogiri 解析网页,并想解析出图像 URL。这是我的设置:
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::HTML(open('https://themeforest.net/search?sort=sales'))
如果我在 chrome 上检查页面,我可以看到以下代码块:
<div class="_2_3rp " style="padding-top:50.847457627118644%">
<div style="">
<img class="_1xvs1" src="https://themeforest.img.customer.envatousercontent.com/files/274559780/screenshots/00-Preview.jpg?auto=compress%2Cformat&fit=crop&crop=top&w=590&h=300&s=37354d884fd0f3b574238e013b4ea423"
title="Avada | Responsive Multi-Purpose Theme"
alt="Avada | Responsive Multi-Purpose Theme" style="left: 0%;">
</div>
</div>
但是,当我运行时:
puts doc.search("//div[@class = '_2_3rp ']")
我得到以下信息:
<div class="_2_3rp " style="padding-top:50.847457627118644%"><div style="height:100%" class="lazyload-placeholder"></div></div>
<div class="_2_3rp " style="padding-top:50.847457627118644%"><div style="height:100%" class="lazyload-placeholder"></div></div>
.....
=> nil
为什么我没有得到img 类,而是得到lazyload-placeholder?有什么办法可以克服这个问题,并避开图像占位符?
【问题讨论】:
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。见:How to create a Minimal, Reproducible Example。当要求从您的代码和数据中删除所有非必要的信息时。我无法复制这个问题,所以我认为它在某处你没有向我们展示。而且,“以下”输出不能来自输入 HTML,因为第二个
divstyle不同。 -
@theTinMan 我已经用确切的代码更新了我的问题。这是我可以形成可重现示例的唯一方法。
标签: ruby html-parsing nokogiri