自研、掌握核心科技?这我可不敢吹,我老老实实说我用了个Chromium内核组件。
为了统计一些数据,一条条复制粘贴肯定是够累的。用爬虫吧,自己还不精通,而且现在好多数据都需要登录才能请求,或者有些需要滑滚动条才显示。
比如csdn社区的打卡记录,一个月的如何快速的统计出来呢?
我想控制网页的请求
我想控制请求结果
我想给网页中硬塞点JS
我想模拟输入、模拟按键
我想自动翻页、拉滚动条、自动抓取数据
在Chrome浏览器中,可以通过安装扩展插件进行一些“特殊操作”。比如CSDN的浏览器插件就很强大,可以参考我的另一篇文章:油#猴是什么猴?又一门新的编程语言?卷不动了呀。
自己弄个浏览器,将这些都实现。
☆☆☆一定要注意,通过自动方式请求,一定要控制频率,我一般每个请求之间都会停顿5秒以上,文明抓数据,不能给别人和自己造成麻烦。☆☆☆
曾经号称打破漂亮国垄断的而大火的“hongxin”浏览器,最终被爆出实际是基于Chromium内核。其实我们也可以弄一个。做桌面软件,微软的Winform和Wpf那肯定是很方便的,也有对应的.Net组件方便将Chromium应用在Winform和Wpf程序中。
CefSharp 允许您在 .NET 应用程序中嵌入 Chromium。 它是 Marshall A. Greenblatt 围绕 Chromium 嵌入式框架 (CEF) 的轻量级 .NET 包装器。 大约 30% 的绑定是用 C++/CLI 编写的,这里的大部分代码是 C#。 它可以在 C# 或 VB 或任何其他 CLR 语言中使用。 CefSharp 提供 WPF 和 WinForms Web 浏览器控件实现。
CefSharp 是 BSD 许可的,因此它可以在专有和免费/开源应用程序中使用。
1. 新建项目
CefSharp 提供 WPF 和 WinForm支持,所以新建哪种项目都行,当然Wpf的可以做的更加漂亮一些。
本例以WinForm为例,新建一个WinForm项目:
设置项目名称,例如MyChrome
添加CefSharp组件,在Nuget中搜索CefSharp.Winforms, 由于本例是建的.Net core项目, 所以选择CefSharp.Winforms.NETCore, 安装即可
在Program.cs中进行初始化:
public static int Main(string[] args) { #if ANYCPU CefRuntime.SubscribeAnyCpuAssemblyResolver(); #endif //For Windows 7 and above, best to include relevant app.manifest entries as well Cef.EnableHighDPISupport(); var settings = new CefSettings() { //By default CefSharp will use an in-memory cache, you need to specify a Cache Folder to persist data CachePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CefSharp\\Cache") }; //Perform dependency check to make sure all relevant resources are in our output directory. Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null); var browser = new BrowserForm(); Application.Run(browser); return 0; }
新建一个Form,例如MainForm,进入设计器:
在工具箱里可以看到已经有了相应组件: