c cef html,CefSharp获取页面Html代码的两种方式

本文介绍了使用CefSharp库在C#中获取网页HTML代码的两种方法。第一种方法是通过执行JavaScript代码,利用`tempFunction()`获取`document.getElementsByTagName('html')[0].innerHTML`。第二种方法是利用`IFrame.GetSourceAsync()`方法,在`Browser_FrameLoadEnd`事件中直接获取HTML源码。这两种方法提供了灵活的方式以适应不同的场景需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CefSharp在NuGet的简介是“The CefSharp Chromium-based browser component”,机翻的意思就是“基于Cefsharp Chromium的浏览器组件”

第一种方法 就是执行JavaScript代码获取当前html代码

StringBuilder sb = new StringBuilder();

sb.AppendLine("function tempFunction() {");

//sb.AppendLine(" return document.body.innerHTML; ");

sb.AppendLine(" return document.getElementsByTagName('html')[0].innerHTML; ");

sb.AppendLine("}");

sb.AppendLine("tempFunction();");

var task01 = browser.GetBrowser().GetFrame(browser.GetBrowser().GetFrameNames()[]).EvaluateScriptAsync(sb.ToString());

task01.ContinueWith(t =>

{

if (!t.IsFaulted)

{

var response = t.Result;

if (response.Success == true)

{

if (response.Result != null)

{

string resultStr = response.Result.ToString();

}

}

}

});

第二种方法 是利用CefSharp.IFrame.GetSourceAsync()方法

///

/// 页面加载结束

///

///

///

private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)

{

var task02 = e.Frame.GetSourceAsync();

task02.ContinueWith(t =>

{

if (!t.IsFaulted)

{

string resultStr = t.Result;

}

});

}

我这里是在Browser_FrameLoadEnd事件中直接获取的IFrame,

GetSourceAsync()方法我简单翻译了一下

//

// 摘要:

// Retrieve this frame's HTML source as a string sent to the specified visitor.

// 检索此框架的HTML源代码以字符串形式发送给指定访问者。

//

// 返回结果:

// a System.Threading.Tasks.Task`1 that when executed returns this frame's HTML

// source as a string.

// 一个线程任务,执行时将此框架的HTML源文件作为字符串返回。

Task GetSourceAsync();

springboot项目启动成功后执行一段代码的两种方式

springboot项目启动成功后执行一段代码的两种方式 实现ApplicationRunner接口 package com.lnjecit.lifecycle; import org.springf ...

js实现页面跳转的两种方式

CreateTime--2017年8月24日08:13:52Author:Marydon js实现页面跳转的两种方式 方式一: window.location.href = url 说明:我们常用 ...

js中获取页面元素节点的几种方式

android启动第一个界面时即闪屏的核心代码(两种方式)

闪屏,就是SplashScreen,也能够说是启动画面,就是启动的时候,闪(展示)一下,持续数秒后.自己主动关闭.  第一种方式: android的实现很easy,使用Handler对象的postDe ...

html页面保存数的两种方式

原文链接:https://blog.csdn.net/qq_37936542/article/details/78866755 需求:微信开发时,在某个页面授权获取用户的openid,但是每次刷新页面 ...

C++调用C代码的两种方式

由于C++支持函数重载,在编译函数代码的时候会加上参数类型的信息,而C编译只有函数名信息,导致C++直接调用C代码在链接的时候会出现函数未定义的问题.解决这种问题有两种方法.方法一:在写C代码的时候考 ...

web项目中实现页面跳转的两种方式

跳转在网页本身,URL不改变

python编写的banner获取代码的两种方式

1.无选项和帮助信息 #!/usr/bin/env python #coding:utf-8 import socket import sys import os from threading imp ...

Struts2获取Servlet的api的两种方式,解决ParameterAware过时的问题

servlet API通过ActionContext进行获取 Struts2对HttpServletRequest,HttpSession和ServletContext进行了封装,构造了3个Map对象 ...

随机推荐

《PDF.NE数据框架常见问题及解决方案-初》

1.新增数据库后,获取标识列的值: 解决方案:    PDF.NET数据框架,已经为我们考略了很多,因为用PDF.NET进行数据的添加操作时 ...

Css 相关资源(本篇不定期更新)

http://www.tuicool.com/articles/3eaINn------☆☆☆☆☆.这篇讲的是css中的如何挤出一个三角形,这个讲的 ...

Hadoop总结篇之三---一个Job到底被提交到哪去了

我们会定义Job,我们会定义map和reduce程序.那么,这个Job到底是怎么提交的?提交到哪去了?它到底和集群怎么进行交互的呢? 这篇文章将从头讲起. 开发hadoop的程序时,一共有三大块,也就 ...

Linux查看操作系统时间

date命令的功能是显示和设置系统日期和时间. 该命令的一般格式为: date [选项] 显示时间格式(以+开头,后面接格式) date 设置时间格式 命令中各选项的含义分别为: -d datestr ...

SQL模式匹配

标准的SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符).在 MySQL中,SQL的模式缺省是忽略大小写的.下面显示一些例子.注意在你使用SQL模式时,你不能使 ...

double类型字符串转换成一个纯数字字符串和一个小数点位数的c++代码

今天工作中遇到一个要不一个double型的字符串转换成一个纯字数字符串和一个标志这个数字字符串的小数点有几位的int类型 例如:“23.123”--->“23123” + 3   比较简单.就是 ...

js+css3 动画数字累加

css: .kk{ width:100px; height:100px; display:inline-block; color:red; text-align:center; position: r ...

java通过JNI接口调用C语言-初级

JNI(java native interface):即java本地调用C的接口. 先看整体运行: 下面是过程: #vim test.java public class test{ public na ...

ActiveMQ的配置与使用

1.什么是ActiveMQ MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来 ...

网站开发进阶(二十九)HTML特殊转义字符

HTML特殊转义字符 参考文献 http://tool.oschina.net/commons?type=2 美文美图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值