1. 使能javascript:

?
1
webView.getSettings().setJavaScriptEnabled(true);

2. 编写本地接口

?
1
2
3
4
5
finalclassInJavaScriptLocalObj {
publicvoidshowSource(String html) {
Log.d("HTML", html);
}
}

3. 向网页暴露本地接口

?
1
webView.addJavascriptInterface(newInJavaScriptLocalObj(), "local_obj");

4. 编写自己的WebViewClient,并在onPageFinished中提取网页源码。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
finalclassMyWebViewClient extendsWebViewClient{
publicbooleanshouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
returntrue;
}
publicvoidonPageStarted(WebView view, String url, Bitmap favicon) {
Log.d("WebView","onPageStarted");
super.onPageStarted(view, url, favicon);
}
publicvoidonPageFinished(WebView view, String url) {
Log.d("WebView","onPageFinished ");
view.loadUrl("javascript:window.local_obj.showSource('<head>'+"+
"document.getElementsByTagName('html')[0].innerHTML+'</head>');");
super.onPageFinished(view, url);
}
}

组合在一起的代码为:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
packagecom.hi.briancol.htmlsource;
importandroid.app.Activity;
importandroid.graphics.Bitmap;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.webkit.WebView;
importandroid.webkit.WebViewClient;
publicclassHtmlSource extendsActivity {
privateWebView webView;
/** Called when the activity is first created. */
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView = (WebView)findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(newInJavaScriptLocalObj(), "local_obj");
webView.setWebViewClient(newMyWebViewClient());
webView.loadUrl("http://www.cnblogs.com/hibraincol/");
}
finalclassMyWebViewClient extendsWebViewClient{
publicbooleanshouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
returntrue;
}
publicvoidonPageStarted(WebView view, String url, Bitmap favicon) {
Log.d("WebView","onPageStarted");
super.onPageStarted(view, url, favicon);
}
publicvoidonPageFinished(WebView view, String url) {
Log.d("WebView","onPageFinished ");
view.loadUrl("javascript:window.local_obj.showSource('<head>'+"+
"document.getElementsByTagName('html')[0].innerHTML+'</head>');");
super.onPageFinished(view, url);
}
}
finalclassInJavaScriptLocalObj {
publicvoidshowSource(String html) {
Log.d("HTML", html);
}
}
}

关键之处在于:

view.loadUrl("javascript:window.local_obj.showSource('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");

运行,可以看到在showSource(String html)中打印了网页源码。

Android: 在WebView中获取网页源码相关推荐

  1. Android 在WebView中获取网页源码

    原文链接:http://www.cnblogs.com/hibraincol/archive/2011/10/26/2224866.html 1. 使能javascript: 1 webView.ge ...

  2. 使用WebBrowser控件获取网页源码的方法

    使用WebBrowser控件获取网页源码的方法,网上有很多介绍,但绝大多数的人都是使用以下的方法获取: (WebBrowser1.Document as IHtmlDocument2).body.ou ...

  3. vc++获取网页源码之使用import+接口方式

    1.使用IWinHttpRequest获取网页源码 首先要创建基于对话框的mfc应用程序 2.import+接口方式 首先导入winhttp.dll,使用IWinHttpRequest接口 #impo ...

  4. webclient无法获取html文件,C# WebClient获取网页源码的方法

    效果如图 完整代码如下using System; using System.Collections.Generic; using System.ComponentModel; using System ...

  5. [转载]关于webbrowser,innet,xmlhttp获取网页源码的比较!

    webbrowser: 示例: For i = 0 To WebBrowser1.Document.All.length - 1      If WebBrowser1.Document.All(i) ...

  6. 如何快速获取网页源码(直接把网站的 js css html 扒下来的)

    如何快速获取网页源码? 我们在学习和研究的时候,或者看到非常酷炫的页面效果,需要网站的源代码进行借鉴,但每次需要下载网站源代码,我们都需要找到一个,下载一个,每次只能下载一个文件,非常缓慢,而且还要自 ...

  7. POST教程笔记 - WinHttp获取网页源码

    ①.WinINet与WinHttp的异同点,为什么使用WinHttp讲解? 详情见:<WinINet与WinHttp总结>文档,已经打包给大家了. ②.WinHttp接口调用方式: 微软官 ...

  8. PHP如何获取网页源码?

    很多人可能会说那不是很简单 直接 file_get_contents ,但是有的时候这样也是获取不到的 那怎么办? 用CURL,某些不太懂得朋友可能会发现CURL也获取不到,其实是你没配置对 有一个属 ...

  9. Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频、图片、获取网页源码等)整理

    Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频.图片.获取网页源码等)整理 目录

最新文章

  1. linux 替换文件中某个字符串_word中如何删除包含某个特定字符串的整个段落?...
  2. 15. 二维数组中的查找【难度: 一般 / 知识点: 思维】
  3. python里有常量吗?(没有,但可自行定义)
  4. linux按时间升序排列文件,Linux展示以时间生升序显示文件
  5. kafka常用命令及问题解决
  6. php星期和时间获取
  7. c语言中int型变量的字节数
  8. ICLR最佳论文“彩票假设”:如何通过彩票假设构建轻量化模型(上)
  9. 【那些年学过的计算机基础】--计算机发展史(图片版)
  10. 使用GPIO输出控制Led亮灭(CC2530)
  11. 【C++】Lambda 表达式详解
  12. SNIPER python3.5环境配置成功记录
  13. Sublime Text正确的打开方式
  14. Grab第一季营收2.28亿美元:亏损4.35亿美元 收窄35%
  15. 2021,你还会继续坚持flash吗...
  16. 5篇关于特征嵌入的研究论文推荐
  17. C++ map用法总结和vector用法总结
  18. 可以给小米盒子装鸿蒙系统吗,小米盒子可以安装第三方软件吗_小米盒子怎么安装第三方软件-系统城...
  19. 计算机水平要空着吗,计算机等级考试一级考试练习题
  20. 2022年中国互联网广告行业市场规模及发展前景分析 2027年中国互联网广告规模或将接近9000亿元

热门文章

  1. OpenCV-腐蚀cv::erode
  2. html 5入门,HTML5入门
  3. android进程守护 失效,保持Service不被Kill掉的方法--双Service守护 Android实现双进程守护 1...
  4. android动态添加控件在指定位置,Android 如何动态添加 View 并显示在指定位置。
  5. 如何装系统,如何装kali linux系统
  6. C++中内存分配方式、空指针及野指针的区别
  7. 基于python的测试报告自动化生成
  8. 英语计算机试卷二,计算机专业英语模拟试题2参考答案.doc
  9. angular 解决闪烁问题_AngularJS页面访问时出现页面闪烁问题的解决
  10. matlab虚拟现实之V-Realm Builder2建模第二部分