在WebView中获取html源码

使用Android WebView加载和解析HTML和JavaScript Android提供了WebView组件,它可以加载和显示HTML页面,并执行其中的JavaScript代码。本文将详细介绍如何在Android应用中使用WebView加载和解析HTML和JavaScript,并提供相应的示例代码。你可以通过为WebView设置WebViewClient和WebChromeClient来处理WebView中的网页事件,如页面加载完成、链接点击等。一旦启用了JavaScript支持,WebView将能够执行加载的网页中的JavaScript代码。步骤3:加载HTML内容。 阅读详情

1. 使能javascript:

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

2. 编写本地接口

?
1
2
3
4
5
final class InJavaScriptLocalObj {
     public void showSource(String html) {
         Log.d( "HTML" , html);
     }
}


3. 向网页暴露本地接口

?
1
webView.addJavascriptInterface( new InJavaScriptLocalObj(), "local_obj" );


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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
final class MyWebViewClient extends WebViewClient{ 
     public boolean shouldOverrideUrlLoading(WebView view, String url) {  
         view.loadUrl(url);  
         return true ;  
     } 
     public void onPageStarted(WebView view, String url, Bitmap favicon) {
         Log.d( "WebView" , "onPageStarted" );
         super .onPageStarted(view, url, favicon);
     }   
     public void onPageFinished(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
package com.hi.briancol.htmlsource;
 
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
 
public class HtmlSource extends Activity {
     private WebView webView;
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super .onCreate(savedInstanceState);
         setContentView(R.layout.main);
         webView = (WebView)findViewById(R.id.webview);
         webView.getSettings().setJavaScriptEnabled( true );
         webView.addJavascriptInterface( new InJavaScriptLocalObj(), "local_obj" );
         webView.setWebViewClient( new MyWebViewClient());
         webView.loadUrl( "http://www.cnblogs.com/hibraincol/" );
     }
     
     
    final class MyWebViewClient extends WebViewClient{ 
         public boolean shouldOverrideUrlLoading(WebView view, String url) {  
             view.loadUrl(url);  
             return true ;  
         } 
         public void onPageStarted(WebView view, String url, Bitmap favicon) {
             Log.d( "WebView" , "onPageStarted" );
             super .onPageStarted(view, url, favicon);
         }   
         public void onPageFinished(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);
         }
     }
     
     final class InJavaScriptLocalObj {
         public void showSource(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获取网页HTML源码完整方案 回顾整篇文章,你会发现:没有一种方法适用于所有场景。API Level推荐方式回传机制适用场景≥ 19推荐首选< 19 且可信源方法调用兼容老旧设备< 19 且禁用JSIprompt拦截应急备用选择哪种方案,取决于你的产品定位、用户群体和技术栈。但无论如何,请记住几点:安全第一:不要随便暴露敏感方法;兼容并蓄:合理封装多版本逻辑;健壮可靠:加入超时、重试、日志;持续优化。 阅读详情

相关推荐

[转帖]通过WebView获取访问网页的源代码

NULL 博文链接:https://dai-lm.iteye.com/blog/1158470

通过WebView获取访问网页的源代码

1) 在layout.xml文件中布局webview控件 (略)  2) 在Activity中获取webview控件,并进行初始化  Java代码   mWebView = (WebView) findViewById(R.id.web);      mWebView.addJavascriptInterface(new MyJavaScript(), "HTML

tfy1332的专栏 1639

webview获取HTML源码

webview获取HTML源码,网上获取源码的比较多,过时的不过时的,看完自己出了一个简单好用的。

Webview解析html源码

webview加载网页的时候,如何获取html的源码,可以通过js来实现。 1:设置webview,js。 webView = (WebView) findViewById(R.id.wv); webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(new

队长,别开枪,是我! 2047

Python爬虫实战:从巨潮网批量抓取上市公司年报JSON数据

网络爬虫作为自动化数据采集的核心技术,其原理是通过模拟浏览器行为向服务器发送HTTP请求并解析响应,从而高效获取结构化信息。在金融数据分析领域,这项技术价值尤为突出,能够将研究人员从繁琐的手工数据收集中解放出来,聚焦于更高阶的模型构建与价值挖掘。典型的应用场景包括上市公司财务研究、市场趋势分析和风险预警系统开发。本文以Python的requests库为核心工具,详细解析如何通过分析巨潮资讯网的JSON数据接口,构建一个稳定、高效的上市公司年报数据采集管道,并重点探讨了接口逆向、分页爬取、PDF文件下载等关键

weixin_42529366的博客 1236

LDA模型参数优化实战:从auto设置到passes调优

本文深入探讨了LDA主题模型的参数优化实战,重点解析了如何通过设置alpha='auto'与eta='auto'让模型自适应语料,并详细阐述了passes参数对训练效果的核心影响。文章提供了系统的调优方法与评估策略,旨在帮助用户从“能用”到“用好”LDA,产出清晰、可解释的主题分析结果。

weixin_29163797的博客 118

android WebView获取html源码

webview里并没有提供直接获取html源码的api,所以只能直接按照html的方式进行获取内容 操作原理:html中获取标签内容 document.getElementsByTagName('html')[0].innerHTML 而且android中就必须要进行js交互调用获取内容 操作如下: 1、webview必须要开启js交互,不能js交互调用就会失效 mWebView.g...

SEN_NO1的博客 1673

EtherCAT从站协议栈---- sampleappl.c 文件解析

这个源文件实际上包含该项目的入口函数main函数。 那么如何找到入口函数呢? 可以进入debug的simulator模式,选中run to main(), 当执行完启动文件startup_cm3.s后就进入了main函数(注意在main函数之前还进入了SystemInit函数), 如下图所示: 这个main函数主要架构如下: int main(void) { HW_Init(); /*PDI(过程数据接口)初始化,这里用的是MCI接.

Jiawei_Z的博客 3068

WebView加载html并修改页面内容,及获取Html源码

最近一个项目中有Android与js交互,中途js跑路了,一些小的功能就要Android完成了,webview加载html展示的时候,有的时候html页面上的一些内容需要做一些调整,高高手一般都会编辑一些js脚本人后注入到页面进行操作修改,, 可惜我不在哪个范畴内,就只能自己捣鼓捣鼓了,下面是修改html页面中的button大小 cssCode = "input[id=\"b...

m5157的博客 5161

手把手教你用UC3844设计多路输出反激电源(附PCB布局避坑指南)

本文详细介绍了使用UC3844设计多路输出反激电源的实战技巧,包括核心电路设计、变压器参数计算、PCB布局优化及EMI抑制方法。通过实验室实测数据和项目经验,帮助工程师避开常见设计陷阱,提升电源性能和可靠性。特别附赠PCB布局避坑指南,助力高效完成开关电源设计。

weixin_30300225的博客 568

《Linux运维总结:etcd 3.5.15集群数据备份与恢复》

《Linux运维总结:etcd 3.5.15集群数据备份与恢复》

东城绝神 1080

android WebView 获取HTML源码

步骤: 1、在WebView初始化的时候加: webView.addJavascriptInterface(new InJavaScriptLocalObj(), "java_obj"); 2、在onPageFinished(WebView view, String url)方法中加: view.loadUrl("javascript:window.java_obj.getSource...

islamabad8的专栏 2807

QMT vs Ptrade:量化交易新手如何根据需求选择券商系统(附实战案例)

本文对比了QMT和Ptrade两大券商量化交易系统的核心差异,帮助量化交易新手根据需求选择合适的平台。QMT适合技术面策略开发,执行效率高;Ptrade则提供全面的财务数据和复杂策略支持。通过实战案例,展示了如何结合两平台优势实现高效量化交易。

weixin_42683394的博客 527

android webview 获取html源代码,Android:得到WebView当前页的html源码

WebView没有提供直接的API,需要用JavaScript变通处理一下。本文试图总结一个最简单、优雅的代码。有两步:1、先创建一个JavaScript接口类:class MyJavaScriptInterface {@JavascriptInterface@SuppressWarnings("unused")public void processHTML(String html) {// 在...

weixin_42572134的博客 282

倾斜摄影与地面激光点云融合高精度建模研究

本文研究了倾斜摄影与地面激光点云融合精细化建模技术,并通过相应的源代码实现了建模过程。该方法将倾斜摄影和激光扫描相结合,能够获得高精度的三维建模结果,为相关领域的研究和应用提供了有力支持。近年来,倾斜摄影和激光扫描技术的快速发展为高精度三维建模提供了新的机遇和挑战。本文针对倾斜摄影与地面激光点云融合建模这一前沿领域展开研究,旨在通过相应的源代码实现精细化的建模过程。同时,使用激光扫描仪进行地面激光扫描,获取地面的点云数据。经过数据融合和精细化建模处理后,我们获得了高精度的三维建模结果。

LpmShell的博客 1245

YOLO26创新改进 | 全网独家创新篇、小目标检测专属 | AAAI 2025 | 引入HS-FPN中的HFP和SDP创新点,从频域增强小目标特征,淘汰FPN进行升级,助力YOLO26有效涨点

本文提出HS-FPN特征金字塔网络,通过高频感知模块(HFP)和空间依赖感知模块(SDP)优化YOLO26模型。HFP利用高通滤波器增强小目标的高频特征,SDP捕获相邻像素的空间依赖关系。在AI-TOD等小目标检测数据集上,HS-FPN相比传统FPN显著提升性能。文章详细介绍了HFP和SDP的模块结构、核心代码实现,以及如何在YOLO26中集成这两个模块的配置方法,提供了多个版本的yaml文件配置方案。实验结果表明该方法能有效改善微小目标检测效果。

Ai缝合怪、助力小伙伴高效发论文 207

Android开发之通过WebView查看HTML源码的方法

老套路先看图: 说下思路: 通过android调用JS方法获取HTML标签等源码,核心代码就一行: view.loadUrl("javascript:window.local_obj.showSource('<head>'+" + "document.getElementsByTagName('html')[0].innerHTML+'</head>');"); 这里面坑也挺多的,我代码里面都有坑的注释 下面是全部代码: p

xiayiye5的博客 2191

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android webview 获取网页内容,在WebView中获取网页中的内容

原理:重写WebViewClient的onPageFinished方法,在onPageFinished中加载一段js代码,js代码再调用本地方法用下面的方法可以获取网页的html源码importandroid.app.Activity;importandroid.graphics.Bitmap;importandroid.os.Bundle;importandroid.util.Log;i...

weixin_39996478的博客 2361

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

获取WebView加载HTML时网页中的内容

main.xml如下: [html] view plain copy &lt;RelativeLay

zhengxiuchen86的博客 2157

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Android WebView 获取网页数据(html)

Android WebView 获取网页数据(html) 发表于7个月前(2015-09-25 11:20)   阅读(813) | 评论(0) 7人收藏此文章, 我要收藏 赞0 4月23日,武汉源创会火热报名中,期待您的参与>>>>>    目录[-] 1. activity_main.layout 2. MainActivity.java 3.

autumn20080101的专栏 698

Android: 在WebView中获取网页源码

Android: 在WebView中获取网页源码 1. 使能javascript: 1 webView.getSettings().setJavaScriptEnabled(true); 2. 编写本地接口 1 2 3 4 5 final class InJavaS

lz610756247的专栏 578

Android在WebView中获取网页源码

1. 使能javascript: ? 1 webView.getSettings().setJavaScriptEnabled(true); 2. 编写本地接口 ? 1 2 3 4 5 final class InJavaScriptLocalObj {     public void s...

liwy_finder的博客 295

WebView4Delphi - Delphi浏览器组件(Edge) (2) - 获取html源码

WebView4Delphi获取Html源码

zsh0409的专栏 2348

Android通过Jsoup解析Html源码

这是一篇通过WebView加载Html页面,接着解析其中的源码,最后在listview中显示并使用的文章 XML文件: 在代码的14行中将WebView隐藏,毕竟我们需要的不是整个html页面 MainActivity: WebViewClient的作用就是帮助WebView处理各种通知、请求事件的,onPageFinished顾名思义在页面加载完成

Android 1078
上一篇: 关于Android WebView对JS与href支持
下一篇: ASP.net传递参数
shareCode
博客等级 码龄15年 125粉丝 40原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值