【发布时间】:2018-11-30 04:50:26
【问题描述】:
我正在尝试从下面 html 的 sn-p 中的“display-ratings”跨度类中检索数字“1”:
<article class="surveys-verbatim__item ">
<h3 id="engine_major">
<a class="surveys-verbatim__item-title surveys-verbatim__item-title--font-large crux-body-copy crux-body-copy--bold" data-cr-collapse data-target=".surveys-verbatim__item" href="javascript:void(0);">
Engine Major
<span class="crux-icons crux-icons-caret-up-small surveys-verbatim__item__arrow"></span>
</a>
</h3>
<div class="surveys-verbatim__item-body">
<div class="row">
<div class="col-sm-6 col-xs-12">
<p class="crux-body-copy crux-body-copy--small surveys-verbatim__item-description">Engine rebuild or replacement, cylinder head, head gasket, turbo or supercharger, timing chain or timing belt.</p>
</div>
<div class="col-md-offset-2 col-md-4 col-sm-offset-1 col-sm-5 col-xs-12">
<div class="surveys-verbatim__item-ratings">
<div class="brick-chart-chart-container">
<div class="brick-chart-chart-wrapper-container clearfix">
<div class="brick-chart-chart-wrapper poor">
<div class="brick-chart-brick"></div>
<div class="brick-chart-brick active" style="width: 20%"></div>
</div>
<div class="score-range ">
<span><span class="display-ratings">1</span> / 5</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</article>
我在 Java 中使用 Jsoup,代码如下:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Main {
public static void main(String[] args) throws Exception {
final Document document = Jsoup.connect("https://www.consumerreports.org/cars/audi/a6/2006/reliability?pagestop").get();
for (Element element : document.select("article.surveys-verbatim__item")) {
String rating = element.select("span.display-ratings").text();
System.out.println(rating);
}
}
}
这会输出空白字符串。谁能告诉我他们是否知道如何提取跨度类“显示评级”中列出的值?
谢谢!
【问题讨论】:
-
您确定页面会在调用您提供的 URL 时加载完整的 HTML 吗?我没有检查,但我假设此页面通过 AJAX 动态加载更多内容。所以最终 JavaScript 在浏览器中呈现页面。由于 JSoup 不是浏览器而只是解析器,因此它无法运行 JavaScript 来呈现页面。您可以尝试使用 selenium 或类似方法来获取 Java 中的内容。见seleniumhq.org/projects/webdriver