『QQ:1353814576』

C#使用 CefSharp采集网页源html代码


C#使用 CefSharp采集网页源html代码

前期为了开发模拟采集工具,最初是使用WebBrowser控件但是经过n次尝试,发现能力有限需求兼容起来过于麻烦, 最终选择了谷歌的开源浏览器控件CefSharp,基本上满足了项目需求;

以下为使用CefSharp的开发过程之中,遇到的一些注意事项及配置问题

  1. 下载安装: CefSharp的版本比较多,版本引用错误也会出现一些莫名其妙的问题,所以这里比较建议使用NuGet方式
  2. CefSharp的编译调试目标平台 : CefSharp的调试、运行均需要明确指定目标平台,而解决方案中,默认的是AnyCup,所以在生成时会提示错误。因而在生成时,要指定运行的平台是x86还是x64,至于选哪个平台可以视实际情况来设置

CefSharp如何提取网页源码?================

最初使用这个控件的时候 ,作为一名英语渣渣可没少为了这个伤脑经。

/// <summary>
/// 浏览器加载状态事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ChromiumContainer_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e) {

    ChromiumContainer.Dispatcher.BeginInvoke(new Action(() = >{
        NetAddress.Text = ChromiumContainer.Address;
        if (ChromiumContainer.IsEnabled && ChromiumContainer.IsLoaded) {
            //加载完成 可以获取html
            string HtmlString=GetHtmlFromChromiumWebBrowser();         
            //TODO
        }
    }));
}
/// <summary>
/// 获取浏览器Html源码
/// </summary>
/// <returns></returns>
private string GetHtmlFromChromiumWebBrowser() {
    Task < String > TaskHtml = ChromiumContainer.GetBrowser().MainFrame.GetSourceAsync();
    string HtmlResponse = TaskHtml.Result;
    return HtmlResponse;
}

以前(几年了)写的两个小程序 不一定还能正常采集可以当例子看看 需要的右侧自取

1. 京东模拟自动提交试用申请程序

2. 爱奇艺优酷全站模拟采集源码