当前位置: 代码网 > it编程>编程语言>C# > C#使用CEFSharp获取动态网页源码的演示步骤

C#使用CEFSharp获取动态网页源码的演示步骤

2024年09月07日 C# 我要评论
cef 全称是chromium embedded framework(chromium嵌入式框架),是个基于google chromium项目的开源web browser控件,支持windows, l

cef 全称是chromium embedded framework(chromium嵌入式框架),是个基于google chromium项目的开源web browser控件,支持windows, linux, mac平台。cefsharp就是cef的c#移植版本。

访问以下链接可以获取cef的详细介绍

chromiumembedded / cef / wiki / home — bitbucket

cefsharp是开源的,地址https://github.com/cefsharp/cefsharp,cefsharp支持winform和wpf,这里我以wpf来进行演示。

1、新建wpf工程,nuget引入cefsharp

2、将解决方案平台更改为x64

3、在xaml中完成界面设计

需要先引入命名空间前缀

xmlns:cefsharp="clr-namespace:cefsharp.wpf;assembly=cefsharp.wpf"
 <window x:class="使用cefsharp获取动态网页源码.mainwindow"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:使用cefsharp获取动态网页源码"
         xmlns:cefsharp="clr-namespace:cefsharp.wpf;assembly=cefsharp.wpf"
         mc:ignorable="d"
         title="mainwindow" height="450" width="800">
     <grid>
         <grid.rowdefinitions>
             <rowdefinition height="35"/>
             <rowdefinition/>
         </grid.rowdefinitions>
 
         <grid>
             <label content="请输入网址" verticalalignment="center" horizontalalignment="left"></label>
             <textbox  verticalalignment="center" margin="80,0,120,0"></textbox>
             <button content="访问" horizontalalignment="right" width="100" verticalalignment="center"/>
         </grid>
 
         <grid grid.row="1">
             <cefsharp:chromiumwebbrowser name="chrome"></cefsharp:chromiumwebbrowser>
         </grid>
     </grid>
 </window>

4、使用cef获取网页源码

只需要设置chromiumwebbrowser.address属性就可以打开网站。

chrome.address = this.tbox_url.text;

5、处理获取到的网页源码

chromiumwebbrowser.frameloadend事件实现里可以获取到网页的动态源码。这里需要注意的是,当你打开一个动态页面,这个事件可能 会触发多次,比如你打开weibo.com,这个事件就会触发多次。

private async void chrome_frameloadend(object sender, frameloadendeventargs e)
         {
             string source = await chrome.getsourceasync();
         }

使用cef无法确定一个网站是否已经完全加载完成,我们只能在它每一次加载完成时,处理它的页面源码。

比如打开weibo.com时,会获取到多次页面源码,结果如下(这里只贴出前面两次的结果):

获取到源码以后可以使用htmlagilitypackanglesharp等解析库来解析html,也可以使用cef执行js实现同样的功能

调用chromiumwebbrowser.evaluatescriptasync函数就可以执行js,函数返回值可以获取到js执行的结果。

以上就是c#使用cefsharp获取动态网页源码的演示步骤的详细内容,更多关于c# cefsharp获取网页源码的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com