gpt4 book ai didi

java - JSoup 根据类获取所有元素

转载 作者:太空宇宙 更新时间:2023-11-04 13:40:38 32 4
gpt4 key购买 nike

我正在使用 JSoup 编写一个网络抓取工具,以从亚马逊搜索结果的第一页获取价格。例如,您在亚马逊上搜索“锤子”,搜索结果的第一页出现,我的抓取工具获取每个搜索结果的所有价格并显示它们。但是,我不明白为什么当我运行程序时没有打印任何内容。 Amazon.ca 上商品价格数字的 HTML 为:

<a class="a-link-normal a-text-normal" href="http://www.amazon.ca/Stanley-51-624-Fiberglass-Hammer-20-Ounce/dp/B000VSSG2K/ref=sr_1_1?ie=UTF8&amp;qid=1436274467&amp;sr=8-1&amp;keywords=hammer"><span class="a-size-base a-color-price s-price a-text-bold">CDN$ 17.52</span></a>

我按如下方式运行代码:

Elements prices = doc.getElementsByClass("a-size-base a-color-price s-price a-text-bold");
System.out.println("Prices: " + prices);

返回的内容:

Prices: 

在这种情况下,如何获得价格值“CDN$ 17.52”?

最佳答案

一种方法是 doc.select("span.s-price"),另一种方法是 doc.getElementsByClass("s-price")

您的代码不起作用,因为 getElementsByClass需要一个单个类名,并返回具有该类的所有元素。您提供了几个类名,该函数无法处理它并且什么也没找到。

您要查找的 span 元素应用了多个类:a-size-basea-color-prices-pricea-text-bold。您可以查找这些类中的任何一个,也可以通过构建 CSS 选择器(如 doc.select(".a-size-base.a-color-price.s-price.a-text-bold"))来匹配具有所有四个类的元素。

但是,您可能想要一个尽可能简单的选择器,因为亚马逊可以随时更改其 CSS 样式,并且很容易破坏您的抓取工具。

刮刀越简单,其断裂的能力就越强。您可能想通过语义而不是渲染样式来查找价格,例如doc.getElementsContainingOwnText("CDN$") 将选择包含文字文本“CDN$”的元素。

关于java - JSoup 根据类获取所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31270556/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com