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

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

一、技术框架

1.1 前端:

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

1.2 后端:

WebApi。AngularJS 配合 WebApi 使用十分融洽。

1.3 后端用到的框架/库:

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

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

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

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

二、技术实现

2.1、抓取免费的 Http 代理地址。

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

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

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

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

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

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

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

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

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

上图:

2.3、读取文章(多线程)

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

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

上图:

点击『开始读取』后

点击『停止读取』后:

三、后记

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

以上。

时间: 2024-12-12 10:21:23

平庸技术流,用 WebApi +AngularJS 实现网络爬虫的相关文章

网络爬虫技术

1.爬虫技术概述 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式.从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件.聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过

Python网络爬虫2:迷你爬虫架构

摘要:从零开始写爬虫,初学者的速成指南! 封面: 关注+转发此文然后我评论留下"架构"即可领取框架的完整程序(随意写的,仅供参考哈),也欢迎大家和我一起交流学习Python,共同成长 介绍 大家好!回顾上一期,我们在介绍了爬虫的基本概念之后,就利用各种工具横冲直撞的完成了一个小爬虫,目的就是猛.糙.快,方便初学者上手,建立信心.对于有一定基础的读者,请不要着急,以后我们会学习主流的开源框架,打造出一个强大专业的爬虫系统!不过在此之前,要继续打好基础,本期我们先介绍爬虫的种类,然后选取最

什么是网络爬虫?有什么用?怎么爬?一篇文章带你领略python爬虫的魅力

网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理.在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高. 此时,我们可以使用网络爬虫对数据信息进行自动采集,比如应用于搜索引擎中对站点进行爬取收录,应用于数据分析与挖掘中对数据进行采集,应用于金融分析中对金融数据进行采集,除此之外,还可以将网络爬虫应用于舆情监测与分析.目标客户数据的收集等各个领域. 当然,要学习网络爬虫开发,首先需要认识网络爬虫,本文将带领大家一起认识

Java 网络爬虫技术

最近在项目中遇到运用到网络爬虫技术的一些问题,在此写下一片记录总结,同时给出一个小的例子,提供给朋友下载研究学习. 该项目采用网络抓取图片数据.流式布局.响应式布局.懒加载.动态切换加载实现web网页抓取. 下面给出具体实现的一些图片效果: 1.实现网络抓取图片数据 2.实现动态切换加载 3.实现懒加载 4.实现响应式布局 以上是几个关键点的实现,具体的代码请下载:alioth_spider ;开发工具:MyEclipse 2014 仅在此记录学习分享,不断积累进步.

cobbler批量安装系统使用详解-技术流ken

1.前言 cobbler是一个可以实现批量安装系统的Linux应用程序.它有别于pxe+kickstart,cobbler可以实现同个服务器批量安装不同操作系统版本. 2.系统环境准备及其下载cobbler 一.系统环境 系统版本:CentOS release 6.7 (Final) 内网IP:192.168.232.7/24    #用来对内通信,提供cobbler服务 外网IP:10.220.5.166/24      #连接外网 二. 关闭安全服务 [[email protected] ~

nginx实现反向代理、负载均衡-技术流ken

1.简介 本篇博文是<nginx实现动态/静态文件缓存-技术流ken>的二部曲.将详细介绍nginx如何实现反向代理以及负载均衡技术,并辅以实战案例. 反向代理--"反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器." 负载均衡--"网络专用术语,负载均衡建立在现有网络结构之

网站集群架构实战(LVS负载均衡、Nginx代理缓存、Nginx动静分离、Rsync+Inotify全网备份、Zabbix自动注册全网监控)--技术流ken

前言 最近做了一个不大不小的项目,现就删繁就简单独拿出来web集群这一块写一篇博客.数据库集群请参考<MySQL集群架构篇:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高性能-技术流ken>下面是项目的一些简单介绍. WEB集群项目简介 随着网站访问量的激增,势必会导致网站的负载增加,现需求搭载一套高性能,高负载,高可用的网站集群架构以保障网站的持续.高效.安全.稳定的运行. 针对以上需求,我们采用了如下的技术: 使用负载均衡技术来实现网站请求的调度分发,减小后端服务器

网络爬虫技术入门_Python基础与爬虫技术

Python基础与爬虫技术  课程学习地址:http://www.xuetuwuyou.com/course/195 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介 本作为一种便捷地收集网上信息并从中抽取出可用信息的方式,网络爬虫技术变得越来越有用.使用Python这样的简单编程语言,你可以使用少量编程技能就可以爬取复杂的网站. <Python 基础与爬虫技术>讲解了从静态页面爬取数据的方法以及使用缓存来管理服务器负载的方法.此外,本课程还介绍了如何使用AJA

[Search Engine] 搜索引擎技术之网络爬虫

随着互联网的大力发展,互联网称为信息的主要载体,而如何在互联网中搜集信息是互联网领域面临的一大挑战.网络爬虫技术是什么?其实网络爬虫技术就是指的网络数据的抓取,因为在网络中抓取数据是具有关联性的抓取,它就像是一只蜘蛛一样在互联网中爬来爬去,所以我们很形象地将其称为是网络爬虫技术.其中网络爬虫也被称为是网络机器人或者是网络追逐者. 网络爬虫技术是搜索引擎架构中最为根本的数据技术,通过网络爬虫技术,我们可以将互联网中数以百亿计的网页信息保存到本地,形成一个镜像文件,为整个搜索引擎提供数据支撑. 1.