2014-08-28 164 views
1

//我有这个AsynchTask获取网站博客的正文。但是,启动方法时不显示任何内容。显示Jsoup元素

protected Void doInBackground(Void... params) { 
     try { 
      Document document = Jsoup.connect(url).get(); 
      Elements elements = document.select("div.pst-content safety clearfix entry-content p"); 
      for(Element elements123 : elements){ 
      title+=elements123.text(); 
      System.out.println(elements123.text()); 

      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     // Set title into TextView 
     TextView txttitle = (TextView) findViewById(R.id.titletxt); 
     txttitle.setText(title); 
     // System.out.println(title); 
     mProgressDialog.dismiss(); 
    } 
+0

不是说它解决了任何问题,但不应该在循环中使用'title + = elements123.text()'。相反,你应该向'StringBuilder'追加新的元素。无论如何,你确定你的代码处理网址是正确的吗?您是否在简单的Java应用程序中测试了这个'select'查询(让主要方法说)? – Pshemo 2014-08-28 13:59:29

+0

我试过选择“a”,它的工作原理。也许它只是查询? – 2014-08-28 14:11:46

+0

这是可能的。如果你的代码适用于一个查询而不适用于其他查询,那么或者这个查询有问题,或者你正在解析错误的数据。考虑打印'document'来看看它是否真的包含了'div.pst-content'和你需要的其他元素(可能这个内容是由JavaScript动态生成的,在这种情况下,你需要像selenium这样的网络驱动程序,而不是简单的解析器像Jsoup)。 – Pshemo 2014-08-28 14:44:10

回答

0

Definetly CSS选择器是错误的。

如果它正在与选择a,并且不与乌尔当前的工作,问题是CSS选择器div.pst-content safety clearfix entry-content p

如果妳可以告诉你企图从HTML提取或网页可能有助于解决你的问题。取笑JSoup -