2014-02-19 25 views
1

我正在尝试在Google新闻中为所有标题刮掉最新报道部分。为了只获得在最新新闻部分的标题,我必须缩小到本文标签:如何使用Jsoup按ID查找元素?

<div class="section top-stories-section" id=":2r">..</div> 

这是我使用(在Eclipse)代码:

public static void main(String[] args) throws IOException { 

    // fetches & parses HTML   
    String url = "http://news.google.com"; 
    Document document = Jsoup.connect(url).get(); 

    // Extract data 

    Element topStories = document.getElementById(":2r").; 
    Elements titles = topStories.select("span.titletext"); 



    // Output data 
    for (Element title : titles) { 
     System.out.println("Title: " + title.text()); 
    } 
} 

我似乎总是得到一个NullPointerException。它也不起作用,当我试图达到这样的热门新闻:

Element topStories = document.select("#:2r").first(); 

我错过了什么吗?这不应该工作吗?我对此比较陌生,请帮忙,谢谢!

回答

0

从错误消息(并实际查看页面)判断div标记不包含id属性。相反,你可以选择基于CSS类

Element topStories = document.select("div.section.top-stories-section").first(); 
+1

谢谢!这样可行。但有两个问题:该div标记如何不包含id属性(它清楚地表明'id =“:2r”')?为什么如果整个班级名称是“部分顶级报道部分”而不仅仅是“顶级报道部分”,那么这种方法会起作用?我对此很陌生,所以我对学习很感兴趣。不过谢谢你! –

+0

如上所述,原来的错误表明它不能找到':2r'这个元素,所以不知道你最初是从哪里得到的。 2)只能用于任何一个CSS类。已更新一起显示2班 - 更正确:) – Reimeus