C#(csharp)用CefSharp开发实现一个浏览器,抓取网站任意资源

前言:

本人喜欢看漫画,觉得好看就 下载下来 收藏。

所以写了个图片 下载器。

不少网站会保护自己,防止别人下载图片。

因此下载器,先先后改了好几次,不断技术升级。


早期 用WebClient 下载 HTML 分析 URL 下载。

后来 为了下载 手机网站的图片,用上了 User-Agent 特性,模拟手机浏览器。


之前遇到一个复杂些的 网站M ,页面用 JS 加载生成。无法直接获得HTML。

用Chrome一番分析后,发现其图片地址 有固定格式。文件名是 3位数数字,从1开始累加。

因此只要在浏览器 取到第一个图,后面的图片URL 生成下 也得到了。批量下载搞定。


前段时间 网站M 升级。图片展示使用 HTML5 canavs 显示,而且 图片路径 也加随机字符。难以生成了。

对于Chrome来说依然没有遮挡效果。依然可以取到 URL,可以手工保存图片, 然而 无法批量下载了。


问题来了:

无法取到 HTML分析出 图片路径,而且路径名称随机。那么如何批量下载图片?

既然 图片展示到我们面前,数据必然也已经到了 我们这边,就看我们这么取得了。


解决办法:

WebClient不行,于是想到了  Winform 的 WebBrowser 实现浏览器,能显示必然能取到数据。

WebBrowser对于大部分网站还是可以的。然而对于 HTML5的 或者 新特性的 网站就有些 不方便了。有时候不能正常显示网站。例如,网站M.

它依赖 操作系统的 IE浏览器,而且默认是系统里老版本的 IE。可能是 IE7 吧。

一番资料查找 发现CefSharp。这个是Chrome 的另一个开源项目,的 C# 调用。可以在Winform,Wpf 等中 嵌入浏览器。


CefSharp在网上有一些资料,不多。为了弄明白CefSharp里 取得 图片URL,图片数据。花了一番功夫,查资料,看源码。

倾情大放送,来一大波代码:


开发环境:VS2015  framework 4.5.2  x86模式   CefSharp 63.0.30 

winform:

 private void button1_Click(object sender, EventArgs e)
        {
            //打开新网址
            richTextBox2.Text = "";


            //WebBrowser.Load(textBox1.Text);//浏览网址,不用Load ,Load 会造成 RegisterJsObject 失效,不知是不是bug。

            panel1.Controls.Remove(CefWebBrowser);
            CefWebBrowser = new ChromiumWebBrowser(textBox1.Text);//浏览网址
            CefWebBrowser.FrameLoadStart += WebBrowser_FrameLoadStart;//加载开始事件
            CefWebBrowser.FrameLoadEnd += WebBrowser_FrameLoadEnd;    //加载完成

            CefWebBrowser.RequestHandler = new RequestHandler_new(CefWebBrowser.RequestHandler);//获取任意 资源的关键处。


            //WebBrowser.RegisterJsObject("jsObj", new JsEvent(), new CefSharp.BindingOptions() { CamelCaseJavascriptNames = false }); //交互数据          
            

            CefWebBrowser.Dock = DockStyle.Fill;//铺满                                                                
            CefWebBrowser.Dock = DockStyle.Fill;//设置停靠方式
            panel1.Controls.Add(CefWebBrowser);



 
  • 6
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值