如何从div类中获取文本?

时间:2015-09-09 06:20:19

标签: java html-parsing jsoup

我正在尝试从HTML页面读取div类中的文本 我正在尝试的是,我正在尝试从div类下面阅读文本。

<div class="Oprice clearfix">
<div class="text-bold Nprice">

我没有得到它,什么是clearfix和text-bold。请解释一下。 以下代码适用于两个div类。

Element lcEl = doc.getElementsByClass("Oprice").first(); //first div
System.out.println("found price: "+lcEl.text()); 

Element lcEl = doc.getElementsByClass("Nprice").first(); //second div
System.out.println("found price: "+lcEl.text());

但为什么下面的代码不起作用?

Element lcEl = doc.getElementsByClass("Oprice.clearfix").first(); //first div
    System.out.println("found price: "+lcEl.text());

Element lcEl = doc.getElementsByClass("text-bold.Nprice").first();
    System.out.println("found price: "+lcEl.text());

请帮助我,有什么方法可以让它发挥作用吗?

2 个答案:

答案 0 :(得分:4)

我认为你正在使用jsoup。

根据您使用的方法getElementsByClass(String className)不允许多个类名

public Elements getElementsByClass(String className)

此方法查找具有此类的元素,包括或包含此元素。它不区分大小写。元素可以有多个类(例如<div class="header round first">。此方法检查每个类,因此您可以使用el.getElementsByClass("header");找到上面的内容。但是您不能提供类Oprice.clearfix这样的类名。因为它的实现没有'允许这种论点。

  

参数:className - 要搜索的类的名称。

     

返回:具有提供的类名的元素,如果没有,则为空

如果您希望使用select()的多个类的catch元素,请执行以下操作,

String html = "<div class=\"content-text right-align bold-font\">foo</div>";
Document document = Jsoup.parse(html);
Elements elements = document.select("div.content-text.right-align.bold-font");
System.out.println(elements.text());

答案 1 :(得分:1)

“Oprice”和“clearfix”是

的两个类
<div class="Oprice clearfix"/>

这意味着,您可以通过以下方式获取此标记:

doc.getElementsByClass("Oprice").first(); 

doc.getElementsByClass("clearfix").first(); 

无效代码:

doc.getElementsByClass("Oprice.clearfix").first()

只是没有意义。 document.getElementsByClass()接受表示要查询的类的字符串。您提供的参数(“Oprice.clearfix”)看起来像(但不是)css查询。您需要在此方法中提供完全准确的类名称。