如何获取在webview中显示的html页面的整个内容文本
Posted
技术标签:
【中文标题】如何获取在webview中显示的html页面的整个内容文本【英文标题】:How to get the whole content text of html page displayed in webview 【发布时间】:2014-09-04 06:32:27 【问题描述】:我发现了从 webview
阅读内容的问题。我已经尝试过无法修复。
我在webview
中显示了一个html 页面。我需要string
中的那个html页面的内容@
java代码
WebView mainContent = (WebView)layout.findViewById(R.id.webView1);
mainContent.getSettings().setjavascriptEnabled(true);
WebSettings webSettings = mainContent.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
mainContent.requestFocusFromTouch();
mainContent.setWebViewClient(new WebViewClient()
@Override
public void onPageFinished(WebView view, String url)
super.onPageFinished(view, url);
mainContent.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
);
mainContent.setWebChromeClient(new WebChromeClient());
mainContent.loadUrl("file:///android_asset/"+filename.get(position));
webSettings.setDefaultFontSize(40);
在我的活动中
public void processHTML(String html)
System.out.println("======++++"+Html.fromHtml(html));
我没有看到我的任何日志。如何在String
中获取HTML
页面的内容(文本)。我在做什么错?提前致谢
【问题讨论】:
看到这个帖子***.com/questions/8200945/… 来自网络或本地文件? @NickF from web 我已经在 webview 中显示了我需要获取的文件 你想在网页视图中显示 html 字符串吗? @Suru 不,我需要在 webview 中显示的 html 页面中的文本 【参考方案1】:我通过这种方式得到了内容
mainContent.getSettings().setJavaScriptEnabled(true);
WebSettings webSettings = mainContent.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
mainContent.requestFocusFromTouch();
mainContent.setWebChromeClient(new WebChromeClient());
mainContent.loadUrl("file:///android_asset/"+filename.get(position));
mainContent.setWebViewClient(new WebViewClient()
@Override
public void onPageFinished(WebView view, String url)
super.onPageFinished(view, url);
mainContent.setWebViewClient(null);
mainContent.loadUrl("javascript:window.HTMLOUT.processHTML('<div>'+document.getElementsByTagName('div')[0].innerHTML+'</div>');");
在我的活动中
class MyJavaScriptInterface
@SuppressWarnings("unused")
public void processHTML(final String html)
runOnUiThread(new Runnable()
public void run()
Spanned page = Html.fromHtml(html);
System.out.println("content"+page);
);
【讨论】:
【参考方案2】:您是否尝试向该页面发起 GET 请愿?
responseString
是字符串中的 HTML 页面。例如:
class RequestTask extends AsyncTask<String, String, String>
@Override
protected String doInBackground(String... uri)
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response;
String responseString = null;
try
response = httpclient.execute(new HttpGet(uri[0]));
StatusLine statusLine = response.getStatusLine();
if(statusLine.getStatusCode() == HttpStatus.SC_OK)
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
out.close();
responseString = out.toString();
else
//Closes the connection.
response.getEntity().getContent().close();
throw new IOException(statusLine.getReasonPhrase());
catch (ClientProtocolException e)
//TODO Handle problems..
catch (IOException e)
//TODO Handle problems..
return responseString;
@Override
protected void onPostExecute(String result)
super.onPostExecute(result);
//Do anything with response..
像这样启动 AsyncTask:
try
String page = new RequestTask().execute("http://myurl.com").get();
catch (InterruptedException e)
// TODO Auto-generated catch block
e.printStackTrace();
catch (ExecutionException e)
// TODO Auto-generated catch block
e.printStackTrace();
【讨论】:
无法理解您的代码.. 我需要从该 webview 获取文本 它是一个使用 AsyncTask 获取 URL 的请求。它以字符串形式返回 HTML 页面(返回 responseString)。您可以使用 webview url 并启动此任务以将其内容检索为字符串。 显示类型不匹配:无法从 AsyncTask以上是关于如何获取在webview中显示的html页面的整个内容文本的主要内容,如果未能解决你的问题,请参考以下文章
如何获取在 UIWebView 中显示的 HTML 页面的标题?
react-native 页面使用WebView布满整个页面,导航栏不显示问题