WebMagic的设计参考了业界最优秀的爬虫Scrapy

http://webmagic.io/docs/zh/posts/ch1-overview/thinking.html


https://github.com/psvehla/liferay-spring-mvc-portlet

http://www.huqiwen.com/2012/08/30/liferay-6-1-development-study-1/

.1 WebMagic的设计思想

1. 一个框架,一个领域

一个好的框架必然凝聚了领域知识。WebMagic的设计参考了业界最优秀的爬虫Scrapy,而实现则应用了HttpClient、Jsoup等Java世界最成熟的工具,目标就是做一个Java语言Web爬虫的教科书般的实现。

如果你是爬虫开发老手,那么WebMagic会非常容易上手,它几乎使用Java原生的开发方式,只不过提供了一些模块化的约束,封装一些繁琐的操作,并且提供了一些便捷的功能。

如果你是爬虫开发新手,那么使用并了解WebMagic会让你了解爬虫开发的常用模式、工具链、以及一些问题的处理方式。熟练使用之后,相信自己从头开发一个爬虫也不是什么难事。

因为这个目标,WebMagic的核心非常简单——在这里,功能性是要给简单性让步的。

2. 微内核和高可扩展性

WebMagic由四个组件(Downloader、PageProcessor、Scheduler、Pipeline)构成,核心代码非常简单,主要是将这些组件结合并完成多线程的任务。这意味着,在WebMagic中,你基本上可以对爬虫的功能做任何定制。

WebMagic的核心在webmagic-core包中,其他的包你可以理解为对WebMagic的一个扩展——这和作为用户编写一个扩展是没有什么区别的。

3. 注重实用性

虽然核心需要足够简单,但是WebMagic也以扩展的方式,实现了很多可以帮助开发的便捷功能。例如基于注解模式的爬虫开发,以及扩展了XPath语法的Xsoup等。这些功能在WebMagic中是可选的,它们的开发目标,就是让使用者开发爬虫尽可能的简单,尽可能的易维护。

WebMagic的设计参考了业界最优秀的爬虫Scrapy,布布扣,bubuko.com

时间: 2024-12-20 19:31:41

WebMagic的设计参考了业界最优秀的爬虫Scrapy的相关文章

webmagic的设计机制及原理-如何开发一个Java爬虫 转

此文章是webmagic 0.1.0版的设计手册,后续版本的入门及用户手册请看这里:https://github.com/code4craft/webmagic/blob/master/user-manual.md 之前就有网友在博客里留言,觉得webmagic的实现比较有意思,想要借此研究一下爬虫.最近终于集中精力,花了三天时间,终于写完了这篇文章.之前垂直爬虫写了一年多,webmagic框架写了一个多月,这方面倒是有一些心得,希望对读者有帮助. webmagic的目标 一般来说,一个爬虫包括

联发科技MT6166芯片资料汇总 ,MT6166开发设计参考

今天分享MT6166数据表的部分资料,供大家学习和工作中参考,资料比较齐全,只分享以下的部分资料 MT6166概述MT6166是以高速2G/3G-FDD/TDD多模式智能手机为目标的射频收发器.平板电脑植入40nm CMOS.RF收发器功能完全集成.MT6166为基带芯片,用来合成即将发射的基带信号,或对接收到的基带信号进行解码 这是一个PLL,用于产生某些校准模式的测试音.1.用于图像抑制校正的接收机输入反馈2.对功率探测器PIN(PDET)的反馈作为接收机增益校准的校准音调 此外,该PLL还

单片机课程设计-四位加法计算器设计参考程序(c语言)

1 #include<reg52.h> 2 typedef unsigned char uint8; 3 typedef unsigned int uint16; 4 5 sbit rw=P2^5; 6 sbit rs=P2^6; 7 sbit e=P2^7; 8 sbit led=P3^7; 9 10 uint8 key,num,ei,eii,p; 11 uint8 fuhao;//定义具体的那个符号,是加减还是乘除. 12 uint8 flag; //定义有没有按下符号键,这个是统称 13

Restful API 架构与设计参考原则

1. 什么是RESTREST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一. 他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强.性能好.适宜通信的架构.REST指的是一组架构约束条件和原则." 如果一个架构符合REST的

时序图设计参考

以上两张图,来源于网络,作者如有介意请联系 下面为自己在分析某购物模块时进行的时序图设计:

数据库设计参考

首先,我们来了解下E-R图,E-R图由实体.属性.联系组成. 例如: 一:对系统有了了解之后,在遵循规范化的原则画出E-R图. 二:看图中有联系的部分. 对于1:1和1:n的,为了查询的需要,数据的参照性等,一般情况下可以将一方设为从表,将联系中的属性归它的属性,加上一个外键,参照主表的主键(必要时加上级联操作). 对于m:n的,为了查询的需要,数据的参照性等,通常有3种方法可供参考: 方法一:让其中一个表作为从表,另外为它增加一个属性来作为主键,联系中的属性归它的属性,再增加一个外键,参照主表

***电商数据库设计参考:ecshop数据库+订单表结构等

ecshop订单表结构ecs_order_info说明 -- 表的结构 `ecs_order_info` CREATE TABLE IF NOT EXISTS `ecs_order_info` ( `order_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '订单详细信息自增id', `order_sn` varchar(20) NOT NULL COMMENT '订单号,唯一', `user_id` mediumint(8)

Restful API 设计参考原则

在项目中,需要为后台服务撰写API.刚开始接触的时候,并没有考虑太多,就想提供URL,服务端通过该URL进行查询.创建.更新等操作即可.但再对相关规范进行了解后,才发现,API的设计并没有那么简单,远远不是URL的问题,而是一个通信协议的整体架构 1. 使用GET.POST.PUT.DELETE这几种请求模式 请求模式也可以说是动作.数据传输方式,通常我们在web中的form有GET.POST两种,而在HTTP中,存在下发这几种. GET (选择):从服务器上获取一个具体的资源或者一个资源列表.

MVC架构设计参考

MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器.一个逻辑模型可以对于多种视图模型,比如一批统计数据你可以分别用柱状图.饼图来表示.一种视图模型也可以对于多种逻辑模型.使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,而C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新,这与<设计模式>中的观察者模式是完全一样. MVC好处:从用户的角度出发,用户可以根据自己的需求,选择自己合适的浏览数据的方式.比如