2015-09-09 40 views
2

我想从HTML页面的div类中读取文本。
我正在尝试的是,我正在尝试从下面的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()); 

请帮助我,有什么办法让它工作吗?

回答

4

我想你使用的是jsoup。

根据您已经使用不允许多个类名

public Elements getElementsByClass(String className) 

这种方法的方法getElementsByClass(String className)发现有这个类,包括或该元素的元素。它不区分大小写。元素可以有多个类(如<div class="header round first">。这个方法检查每一个类,这样你就可以找到以上el.getElementsByClass("header");,但你不能提供类名像Oprice.clearfix。由于其实现不允许那样的说法。

参数:className - 类的名称搜索

返回:与所提供的类名的元素,空,如果没有

如果你想赶上多类元素使用select(),做到这一点的。 FOL低价,

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()); 
+0

不适用于我我有以下HTML

This is for test

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查询。您需要在此方法中提供准确且准确的类名称。

+0

感谢王宇对你的很好的解释。 – subramaniam