JSoup-提取div的内容时出错



我正在做一个Android项目,目前正在使用JSoup从网站上为应用程序提取数据。

我的目标网站在这里。

我想提取主要信息文本。该div的xpath是

//div[@id='wikiAbstract']

我的完整代码如下

public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
   TextView tv = (TextView) findViewById(R.id.textView1);
   Document doc = null;
   try {
       doc = Jsoup.connect("http://www.last.fm/music/Bright+Eyes").get();
   } catch (IOException e) {
       e.printStackTrace();
   }
   Element divs = doc.select("div#wikiAbstract").first();
   tv.setText(divs.text());

}

但是,我得到了一个空指针异常。我在其他网站和div上测试过同样的代码,它运行得很好。我不明白为什么这是不同的。

我将感谢任何人的帮助/反馈,提前感谢。

好吧,这里的html内容来自last.fm网站的移动版本,所以div id不同。

对于任何可能遇到这种情况的人,你可以在连接中添加一个用户代理请求头,以确保完整的网站被请求,或者只确保你从移动网站获得正确的div id

Document doc = Jsoup.connect(myURL)
                .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0.1) Gecko/20100101 Firefox/8.0.1")
                .get();

这个完整的程序:

public static void main(String[] args) throws IOException {
    Document doc = Jsoup.connect("http://www.last.fm/music/Bright+Eyes").get();
    Element content = doc.select("div#wikiAbstract").first();
    System.out.println(content.text());
}

输出(缩短):

明亮的眼睛是一个主要由美国歌手,吉他手,和词曲作者康纳·奥伯斯特。明亮的眼睛也有多乐器演奏家/制作人Mike Mogis,键盘手Nate沃尔科特和主要来自奥马哈,内布拉斯加州和。。。

也就是说,您的错误位于其他地方。也许textView就是null

这里的一般教训是,在继续前进之前,提取出你认为失败的部分并确认你的怀疑是值得的。

最新更新