2011-08-10 97 views
1

我正在使用此代码来检索本页主文章中的文字。如何使用jsoup从此html页面获取文本?

public class HtmlparserExampleActivity extends Activity { 
String outputtext; 
    TagFindingVisitor visitor; 
    Parser parser = null; 
private static final String TAG = "TVGuide"; 



TextView outputTextView; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    outputTextView = (TextView)findViewById(R.id.outputTextView); 
    String id = "main-article-content"; 
    Document doc = null; 

    try { 
     doc = Jsoup.connect("http://movies.ign.com/articles/100/1002569p1.html").get(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    Log.i("DOC", doc.toString().toString()); 
    Elements elementsHtml = doc.getElementsByTag(id); 
    String[] temp1 = new String[99];  
    int i =0; 
    for(Element element: elementsHtml) 
    { 

     temp1[1] = element.text(); 
     i++; 
     outputTextView.setText(temp1[1]); 

问题是什么都没有显示在textview中。没有任何我想要回溯的文字显示出来。 Log.i显示在调试日志中的段。所以我知道它的连接成功。只是不知道为什么我没有在textview中获得任何文本。

回答

2

下面是你的问题相关的简化提取物:

Document doc = Jsoup.connect("http://movies.ign.com/articles/100/1002569p1.html").get(); 
Elements elementsHtml = doc.getElementsByTag("main-article-content"); 
// ... 

你在这里做一个根本的错误。文档中没有HTML标签,如<main-article-content>。但是,有一个<div id="main-article-content">。根据这个Jsoup cookbook中途的CSS选择器概述,你应该使用#id选择器。

Document doc = Jsoup.connect("http://movies.ign.com/articles/100/1002569p1.html").get(); 
Element mainArticleContent = doc.select("#main-article-content").first(); 
// ... 
+0

非常感谢。你会如何推荐我学习DOM,CSS以更熟悉这一点? –

+1

使用HTML和CSS开发一些网站(在一个单独的'.css'文件!)。链接的Jsoup食谱概览真的是你所需要的。有关更高级的概述,请参阅w3 http://www.w3.org/TR/CSS2/selector.html – BalusC

+0

感谢您提供的所有帮助。我是新来的。对困惑感到抱歉。 –