从网页字符串获取文本 [英] Get text from web page to string

查看:167
本文介绍了从网页字符串获取文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好了,所以我是新来的Andr​​oid和我想获得一个字符串整个文本从网页。我发现了很多这样的问题,但正如我说我是新的Andr​​oid和我不知道如何使用它们在我的应用程序。我得到的错误。只有一个方法,我设法得到它的工作,它使用的WebView和JavaScript,它是慢如蜗牛。有人能告诉我一些其他的方式做到这一点,或如何加快的WebView,因为我不使用它在所有观看的内容。 顺便说一句,我增加了以下code加快的WebView

  webView.getSettings()setJavaScriptEnabled(真)。
    。webView.getSettings()setBlockNetworkImage(真正的);
    。webView.getSettings()setJavaScriptCanOpenWindowsAutomatically(假);
    webView.getSettings()setPluginsEnabled(假)。
    。webView.getSettings()setSupportMultipleWindows(假);
    。webView.getSettings()setSupportZoom(假);
    。webView.getSettings()setSavePassword(假);
    webView.setVerticalScrollBarEnabled(假);
    webView.setHorizo​​ntalScrollBarEnabled(假);
    webView.getSettings()setAppCacheEnabled(假)。
    。webView.getSettings()setCacheMode(WebSettings.LOAD_NO_CACHE);
 

和请,如果你知道其他更好更快的解决方案比使用的WebView请给我的主要活动的全部源$ C ​​$ C或解释在我应该写它,所以我不明白的错误..谢谢前进!<​​/ P>

解决方案

使用此:

 公共类ReadWebpageAsyncTask延伸活动{
    私人的TextView TextView的;

    / **第一次创建活动时调用。 * /
    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);
        TextView的=(的TextView)findViewById(R.id.TextView01);
    }

    私有类DownloadWebPageTask扩展的AsyncTask&LT;字符串,太虚,字符串&GT; {
        @覆盖
        保护字符串doInBackground(字符串...网址){
            串响应=;
            对于(字符串网址:网址){
                DefaultHttpClient客户端=新DefaultHttpClient();
                HTTPGET HTTPGET =新HTTPGET(URL);
                尝试 {
                    HTT presponse执行= client.execute(HTTPGET);
                    InputStream的内容= execute.getEntity()的getContent()。

                    的BufferedReader缓冲=新的BufferedReader(
                            新InputStreamReader的(内容));
                    字符串s =;
                    而((S = buffer.readLine())!= NULL){
                        响应+ = S;
                    }

                }赶上(例外五){
                    e.printStackTrace();
                }
            }
            返回响应;
        }

        @覆盖
        保护无效onPostExecute(字符串结果){
            textView.setText(Html.fromHtml(结果));
        }
    }

    公共无效readWebpage(查看视图){
        DownloadWebPageTask任务=新DownloadWebPageTask();
        task.execute(新的String [] {http://www.google.com});

    }
}
 

main.xml中

 &LT; XML版本=1.0编码=UTF-8&GT?;
&LT; LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:方向=垂直
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    &GT;

    &LT;按钮机器人:layout_height =WRAP_CONTENT机器人:layout_width =match_parent机器人:ID =@ + ID / readWebpage机器人:的onClick =readWebpage机器人:文本=加载网页&GT;&LT; /按钮&GT;
    &LT; TextView的机器人:ID =@ + ID / TextView01机器人:layout_width =match_parent机器人:layout_height =match_parent机器人:文本=示范文本&GT;&LT; / TextView的&GT;
&LT; / LinearLayout中&GT;
 

Okay, so I'm new to android and I want to get the whole text from a web page to a string. I found a lot of questions like this but as I said I'm new to android and I don't know how to use them in my app. I'm getting errors. Only one method I managed to get it to work, it uses WebView and JavaScript and it is slow as hell. Can someone please tell me some other way to do this or how to speed up the WebView since I don't use it at all for viewing content. BTW I've added the following code to speed up WebView

webView.getSettings().setJavaScriptEnabled(true); 
    webView.getSettings().setBlockNetworkImage(true);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
    webView.getSettings().setPluginsEnabled(false);
    webView.getSettings().setSupportMultipleWindows(false);
    webView.getSettings().setSupportZoom(false);
    webView.getSettings().setSavePassword(false);
    webView.setVerticalScrollBarEnabled(false);
    webView.setHorizontalScrollBarEnabled(false);
    webView.getSettings().setAppCacheEnabled(false);
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

And please if you know other better and faster solution than using WebView please give me the whole source code of main activity or explain where I'm supposed to write it so I don't get errors.. Thanks in advance!!

解决方案

Use This:

public class ReadWebpageAsyncTask extends Activity {
    private TextView textView;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textView = (TextView) findViewById(R.id.TextView01);
    }

    private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... urls) {
            String response = "";
            for (String url : urls) {
                DefaultHttpClient client = new DefaultHttpClient();
                HttpGet httpGet = new HttpGet(url);
                try {
                    HttpResponse execute = client.execute(httpGet);
                    InputStream content = execute.getEntity().getContent();

                    BufferedReader buffer = new BufferedReader(
                            new InputStreamReader(content));
                    String s = "";
                    while ((s = buffer.readLine()) != null) {
                        response += s;
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return response;
        }

        @Override
        protected void onPostExecute(String result) {
            textView.setText(Html.fromHtml(result));
        }
    }

    public void readWebpage(View view) {
        DownloadWebPageTask task = new DownloadWebPageTask();
        task.execute(new String[] { "http://www.google.com" });

    }
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <Button android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/readWebpage" android:onClick="readWebpage" android:text="Load Webpage"></Button>
    <TextView android:id="@+id/TextView01" android:layout_width="match_parent" android:layout_height="match_parent" android:text="Example Text"></TextView>
</LinearLayout>

这篇关于从网页字符串获取文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆