2013-10-18 132 views
0

我想获得每部电影的评级,但我似乎无法以正确的方式使用select方法。我试图从网页得到7.0部分:Jsoup Select方法返回null

http://www.imdb.com/title/tt0800369/

<div class="star-box giga-star"> 
     <div class="titlePageSprite star-box-giga-star"> 7.0 </div> 

我用这行的java:

Element rating = doc.select("star-box giga-star").first(); 
System.out.println(rating); 

提前感谢!

回答

0

问题,您的选择是,你正在使用ancestor child选择,而不是.classelement.classdiv.star-box。请注意,如果您不想指定element,则需要使用多个类别element.class1.class2.class1.class2

此外,如果你想指定parentchild关系,你将不得不使用>所以尽量可能像

Document doc = Jsoup.connect("http://www.imdb.com/title/tt0800369/").get(); 

Element rating = doc 
     .select("div.star-box.giga-star > div.titlePageSprite.star-box-giga-star") 
     .first(); 

System.out.println(rating); 

不幸的是这将打印

<div class="titlePageSprite star-box-giga-star"> 
    7.0 
</div> 

所以,如果你想获得纯文本从该元素抗衡使用System.out.println(rating.text());


BTW因为带班只有一个元素star-box-giga-star你可以使用

String rating = doc.select(".star-box-giga-star").text(); 

如图Alex answer

+0

非常感谢你的! – Craig

+0

@Craig欢迎:) – Pshemo

2

您可以使用.star-box-giga-star按类别选择元素,并使用text()来获取元素的文本内容。

doc.select(".star-box-giga-star").text();