【ShoppingWebCrawler】-基于Webkit内核的爬虫蜘蛛引擎概述
概述
在各个电商平台发展日渐成熟的今天。很多时候,我们需要一些平台上的基础数据。比如:商品分类,分类下的商品详细,甚至业务订单数据。电商平台大多数提供了相应的业务接口。允许ISV接入,用来扩展自身平台的不足,更好的为使用者提供服务。但是平台的ISV接入门槛现在越来越高,审核也越来越严格。拿不到接口SDK的密钥,就只能望洋兴叹。
针对这种情况,有时候就需要采取一些另类手段-蜘蛛爬虫。 模拟正常的客户端请求,对获取响应的内容进行解析,从内容提取关键内容。
蜘蛛爬虫的核心就是:发送http请求,获取响应。
万变不离其宗。使用python的做的爬虫比较多,相应的工具包也比较丰富。比如大名鼎鼎的 scrapy。但是这种单纯的发送请求 ,获取响应的引擎,有时候很难在响应式交互页面就显得捉鸡。大把大把的js ajax请求,让响应的内容并不是想要的结果。让蜘蛛引擎搭配浏览器内核,看起来是个不错的选择。尤其是对js H5支持较好的webkit内核,再好不过。
pthon 爬虫的典型:
scrapy + selenium + PhantomJS + libcef
作为C#的拥趸者,我们用C# 来实现上面的引擎机制。ShoppingWebCrawler 就是在这种背景下诞生的。
项目github地址:ShoppingWebCrawler
开发语言:C#
开发工具:Visual Studio 2015 +.Net Framework4.0
运行平台:Windows
支持集群:是
可视化工具:支持;可视化工具目前有针对蜘蛛的web浏览器工具,用来进行登录授权,进程共享cookie。ShoppingPeeker 项目用来实现对蜘蛛数据的可视化操作。
承载方式:Windows 服务。
支持高效TCP通信
支持集群部署
支持Windows 服务+Headless
支持会话可靠性 登录状态保持
支持模拟 Chrome 请求发送解析响应
内置libcef 支持V8 解析JS
姊妹篇同步发行
【ShoppingPeeker】-基于Webkit内核的爬虫蜘蛛引擎 ShoppingWebCrawler的姊妹篇-可视化任务Web管理
ShoppingWebCrawler
This Project is a WebCrawler build by .net framework .
本项目是一个基于使用微软.net framework 结合Google的webkit内核做的蜘蛛采集工具。 支持多进程的集群模式。实现高性能的蜘蛛采集!
项目概述
使用此工具,进行电商平台的数据采集。 本项目已经实现可以采集淘宝、天猫、京东、拼多多、一号店、国美、苏宁等主流电商平台的网页数据。
实现核心
1、使用基于 Xilium.CefGlue 的libcef绑定,实现C#操作webkit。进行可视化的登陆授权。不定时刷新,进行登陆状态的模拟和守护。
2、使用Topshelf+libcef的Headless 模式(无头模式),进行windows 服务承载。对蜘蛛进程进行挂载守护。
3、使用log4net进行日志记录
4、使用Quartz.Net 进行定时任务Schduler。
5、服务进程使用自定义高性能Socket(NTCPMessage)进行网络通信。对来自服务Client的请求进行请求应答。
6、集群模式,使用简易的多进程实现集群。开启不同的监听端口,实现采集任务的负载均衡,进而大幅度提升硬件服务器的使用效率。
Xilium.CefGlue 简介
Xilium.CefGlue是对CEF项目的.net的包装,它是用P/Invoke的方式来调用CEF类库的,请参见:https://bitbucket.org/xilium/xilium.cefglue/wiki/Home。 使用Xilium.CefGlue 可以实现.net 操作Chrome浏览器内核。进而实现浏览器网页加载,js V8的实现。
Topshelf简介
Topshelf是创建Windows服务的一种方法。Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主。
引用安装 1、官网:http://topshelf-project.com/ 这里面有详细的文档及下载
安装:TopshelfDemo.exe install
启动:TopshelfDemo.exe start
重启:TopshelfDemo.exe restart
卸载:TopshelfDemo.exe uninstall
什么是Headless浏览器?
简单的说就是一个没有UI界面的浏览器。使用命令行进行代码控制浏览器行为,常见于自动化单元测试。
如何使用?
1、下载源码到本地。比如:d:\src
2、使用visual studio2015 打开项目并编译。
3、配置Redis 环境。本项目使用redis 进行进程间的cookie共享,从而实现登录凭据cookie的跨进程共享。在UI进程和Heaadless进程间进行Cookie共享。
4、运行 ShoppingWebCrawler.Host 项目,即可运行。
如何使用界面工具进行请求的可视化?
编译 ShoppingWebCrawler.Host.DeskTop ,得到UI 工具,可以对打开一个网址。比如登录淘宝,就可以在本地进程间共享淘宝登录凭据。从而实现 特定的蜘蛛采集任务。比如:采集某个类目的商品。采集商品优惠券。
如何在Windows 服务进行承载?
编译项目ShoppingWebCrawler.Host.WindowService,然后去项目的输出目录,在cmd 、powershell 定位到此目录。执行:
ShoppingWebCrawler.Host.WindowService.exe install 即可。如果想卸载,那么执行指令:ShoppingWebCrawler.Host.WindowService.exe uninstall .
参考topshelf的命令。
如何开启集群模式?
在项目ShoppingWebCrawler.Host 的app.config文件中
<!--是否开启集群模式-->
<add key="ClusteringMode" value="true"/>
<!--集群子节点数量-->
<add key="ClusterNodeCount" value="3"/>
联系作者
MyBlog:http://www.cnblogs.com/micro-chen/
QQ:1021776019
【ShoppingWebCrawler】-基于Webkit内核的爬虫蜘蛛引擎概述的更多相关文章
- 【ShoppingPeeker】-基于Webkit内核的爬虫蜘蛛引擎 ShoppingWebCrawler的姊妹篇-可视化任务Web管理
ShoppingPeeker 这个项目是蜘蛛项目的可视化任务站点. 项目github地址:ShoppingPeeker 开发语言:C# 开发工具:Visual Studio 2017 +.Net Co ...
- Webkit内核开源爬虫蜘蛛引擎
C#开发的基于Webkit内核开源爬虫蜘蛛引擎 https://www.cnblogs.com/micro-chen/p/9075590.html 概述 在各个电商平台发展日渐成熟的今天.很多时候,我 ...
- [WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析
[WebKit内核] JavaScript引擎深度解析--基础篇(一)字节码生成及语法树的构建详情分析 标签: webkit内核JavaScriptCore 2015-03-26 23:26 2285 ...
- 将webkit内核封装为duilib的浏览器控件
转载请说明出处,谢谢~~ 原本的duilib是自带浏览器控件的,但是使用了IE内核,我在做仿酷狗音乐播放器时,在右侧乐库要用到浏览器控件,而我使用自带的IE控件却发现了不少缺点,这也是duilib一直 ...
- 八大Webkit内核浏览器
列举出时下最流行的Webkit内核浏览器,所以我们并不会做出评测和对比.PS:本文列举的浏览器有一部分为IE+Webkit双核浏览器,如果您对其他IE内核浏览器很感兴趣<抛弃数据!用体验和感觉告 ...
- 【WebKit内核 CEF3 】 第一篇:下载分支代码并本地编译
关于CEF Chromium Embedded Framework 简单说就是 WebKit内核的 对外绑定. 当前主流浏览器内核 一.Trident内核代表产品Internet Explorer ...
- WebKit内核分析之Page
参考地址:http://blog.csdn.net/dlmu2001/article/details/6213377 注:本系列博客是在原博主博客基础上增加了自己的理解和片段,可以看源博文获得清晰的结 ...
- iOS:WebKit内核框架的应用与解析
原文:http://www.cnblogs.com/fengmin/p/5737355.html 一.摘要: WebKit是iOS8之后引入的专门负责处理网页视图的框架,其比UIWebView更加强大 ...
- PhantomJS:基于WebKit、开源的服务器端JavaScript API
PhantomJS是一个基于WebKit的服务器端JavaScript API,它基于 BSD开源协议发布.PhantomJS无需浏览器的支持即可实现对Web的支持,且原生支持各种Web标准,如DOM ...
随机推荐
- 配置SharePoint环境加域提示网络名不可用[已解决]
今天去客户给机器做备机,带着装好SharePoint07的机器跑过去了,先做个LAN,然后连上机器开始工作:首先当然是改ip地址,然后都改好了开始加域,加了好几次,发现都不行,提示"指定的网 ...
- centos 7下安装python 3.6笔记
每次在centos上安装python 3都需要重新查资料,这次索性自己记下笔记. 首先安装gcc yum -y install gccyum install zlib-devel./configure ...
- 使用XStream是实现XML与Java对象的转换(6)--持久化
九.持久化 在第八节的示例中,当我们操作一组对象时,我们可以指定Writer.OutputStream来写出序列化后的XML数据,我们还可以指定Reader.InputStream来读取序列化后的XM ...
- word break II(单词切分)
Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, add space ...
- JTA 分布式事务
什么是JTA - 2009-07-25 18:31:06| 分类: 技术文章|举报|字号 订阅 什么是JTA? Java Transaction API(Java事务API) (JTA)Ja ...
- GitHub awesome Resource
各种Awesome技术资源的资源聚合: https://github.com/sindresorhus/awesome Contents Platforms Programming Languages ...
- ffmpeg转换参数和压缩输出大小的比率 参考 最新版本FFMPEG
https://blog.cnlabs.NET/3668.html ffmpeg 转换压缩比例 FFMPEG如果是压缩为FLV文件 3个编码可选1. -c:v flv 标准FLV编码 这个好处是速度快 ...
- DataReport使用手记
06年的一篇blog,转过来: 前几天,帮同事改一个VB的课业程序,具体任务就是在程序中添加报表功能,由于考虑到部署环境的问题,所以没有采用我以前惯用的Excel实现,而采用了同事提出的VB自带的Da ...
- Ocelot中文文档-转换Headers
Ocelot允许在请求下游服务之前和之后转换头部.目前Ocelot只支持查找和替换.这个功能在Github #190提出.我确定这个功能可以在各个方面发挥作用. 添加到请求 这个功能在GitHub # ...
- PHP代码审计
Preface 这篇文章的内容会不断的充实和丰富,前期会增加一些之前爆出漏洞的复现过程,来丰富自己实际代码审计经验,后期如果能挖掘出新的漏洞,便更好. 代码审计之SQL注入:BlueCMSv1.6 s ...