【问题标题】:Get information from HTML by identifying tags通过识别标签从 HTML 中获取信息
【发布时间】:2012-09-10 00:08:38
【问题描述】:

所有-我以前从未做过这种事情,我很困惑。我在 Google 上花了几个小时寻找一些示例代码或任何提示,但是每当我尝试使用可用代码时,我总是会遇到错误,并且最终会比开始时更加困惑。所以自怜和借口已经够多了。让我们来看看这个问题:我有一个应用程序“屏幕碎片”一个网站,现在是谷歌。我已经得到它,所以我可以在文本视图中显示 html: 我现在的问题是从中获取信息。我想要的只是标题标签(“Google”)中的信息。我已经阅读了有关 HTML 解析的内容,但是当我阅读有关 TagSoup 或其他类似信息的信息时,我感到非常困惑。我是否需要这些来执行此操作,或者是否可以编写一些 Java 代码来提取标题标签并将其转换为字符串然后显示它。如果我确实需要 HTML 解析器,有人可以给我一些示例代码。我在他们的网站上找不到任何东西。 这是我到目前为止的代码:

public class MainActivity extends Activity {
String page;
String display;
Document doc;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);        
    new AddStringTask().execute();      
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}    
class AddStringTask extends AsyncTask<Void, String, Void> {    
    @Override
    protected Void doInBackground(Void... unused) {
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet("http://www.google.com");
        ResponseHandler<String> resHandler = new BasicResponseHandler();
        try {
            page = httpClient.execute(httpGet, resHandler);             
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(String... item) {           
    }       
    @Override
    protected void onPostExecute(Void unused) {  
        TextView google = (TextView) findViewById(R.id.google);         
        google.setText(page);       
    }       
}
}

任何示例代码都会很棒,因为我需要查看一些示例。非常感谢您的宝贵时间。

【问题讨论】:

    标签: java android html-parsing


    【解决方案1】:

    jsoup: Java HTML Parser 应该可以解决问题:

    Document doc = Jsoup.connect("http://google.com/").get();
    String docTitle = doc.title();
    

    然后将docTitle 传递给google.setText()

    您可以找到更多示例here

    【讨论】:

    • 我必须做什么才能将 Jsoup 添加到我的代码中。我已经下载了。我需要将其添加为库还是什么?
    • 好的。我把它记下来了。接下来,我应该将您的代码 sn-p 放在我的代码中的什么位置?
    • 它替换了 doInBackground 方法中的所有代码。我恭敬地建议您在进一步学习之前复习一下您的 Java 技能。
    • 我知道。我现在明白了。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 2012-01-07
    • 2012-07-02
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    相关资源
    最近更新 更多