平庸技术流,用 WebApi +AngularJS 实现网络爬虫

最近园子里网络爬虫很火爆,从%26nbsp;PHP%26nbsp;到%26nbsp;Python,从%26nbsp;windows服务%26nbsp;到%26nbsp;winform%26nbsp;程序,各路大神各显神通。小弟也献下丑,从平庸流出发,简述下 WebApi +AngularJS%26nbsp;方式实现网络爬虫。

一、技术框架

1.1 前端:

AngularJS,创建SPA(单页面应用)。爬虫需要长时间的等待服务器返回结果,必须使用ajax实现,使用JQuery一样可以做到。

%26nbsp;

1.2 后端:

WebApi。AngularJS 配合 WebApi%26nbsp;使用十分融洽。

%26nbsp;

1.3 后端用到的框架/库:

a. Abp,最近园子里很火的基础框架,最大的优点是分模块的实现,包括 AppService(WebApi) 层的分模块,使用后,代码结构非常清晰。详细内容可以见 基于DDD的现代ASP.NET开发框架--ABP系列文章总目录

%26nbsp;

b.%26nbsp;苏飞论坛的C#HttpHelper万能框架,用于Html页面的采集,可以直接使用『HTTP代理』读取,这点很重要!

需要注意的一点是,这个框架不是免费的,需要成为年费会员才可以下载。

%26nbsp;

c. Ivony的Jumony库,项目介绍:%26ldquo;Jumony Core首先提供了一个近乎完美的HTML解析引擎,其解析结果无限逼近浏览器的解析结果。支持CSS3选择器。%26rdquo;

%26nbsp;

二、技术实现

2.1、抓取免费的 Http%26nbsp;代理地址。

这个百度就行,可以搜索到一大堆的提供%26nbsp;Http%26nbsp;代理网址的网站,首先将这些免费的Http代理抓取大自己的代理库,第二步和第三步需要用到这些代理。使用时,要记录代理的可用情况,设定策略,失败次数过多时,剔除掉。

当然,土豪直接购买收费的代理即可,稳定性高。

下面是我抓取的代理列表:

被禁的代理(我设定策略是失败次数大于成功次数3次,即抛弃):

%26nbsp;

%26nbsp;

2.2、读取文章列表(单线程)

有了足够的Http代理列表后,就可以抓取网页了。

后端实现功能:使用 HttpHelper%26nbsp;挂代理抓取网页,然后使用 %26nbsp;Jumony%26nbsp;分析页面内容。同时要记录每个%26nbsp;Http%26nbsp;代理的成功/失败情况。

前端控制流程:根据%26nbsp;代理抓取的结果,判断是否抓取成功。如果成功,继续下一个页面的抓取;如果失败,换个代理继续抓取当前页。

由于文章列表不会太多,用单线程抓取足够了。

上图:

%26nbsp;

2.3、读取文章(多线程)

通过第二步抓取到了大量未读取内容的文章后,这时候就需要抓取文章内容了。由于量比较大,通过多线程实现。

所谓的多线程,就是通过 Ajax%26nbsp;同时调用多个%26nbsp;WebApi%26nbsp;进程,通过监控返回结果。

上图:

点击『开始读取』后

%26nbsp;点击『停止读取』后:

%26nbsp;

三、后记

没有用到什么高深的知识,高深的部分都被%26nbsp;AngularJS、Abp、HttpHelper、Jomony实现,因此是平庸技术流的实现。

以上。

%26nbsp;

0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值