Jsoup Select方法返回null

时间:2013-10-18 15:16:41

标签: java web screen-scraping jsoup

我试图获得每部电影的评级,但我似乎无法以正确的方式使用选择方法。我想从网页上获取 7.0 部分:

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);

提前致谢!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

此外,如果您想指定parent child关系,则必须使用>,所以请尝试类似

的内容
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

所示