对webmagic总体构架的理解与代码分析——Spider篇

Spring boot+webMagic实现自动化爬取网站内容 本文摘自:https://funyan.cn/p/6861.html 前言 在网站中,内容才是王道,如果你的网站功能很多也很好看,但是没有内容,那么将毫无意义,但是要是靠站长自己写的话那将是一段非常漫长的过程,所以这时候就需要借鉴其他站的内容,来丰富自己的网站,所以爬虫就出现了,那么今天就教大家如何使用Spring boot+webMagic实现自动化爬取网站内。 开发过程 第一步:引入webMagic <dependency> <groupId. 阅读详情

不得不说webmagic是一个很优秀的爬虫框架,但是我要怎么做才能吃透它呢?我是爬虫初学者,我接下来要做的是将webmagic的代码梳理一遍,不知道我能不能将其整理好,并且灵活运用,举一反三呢。在这个过程中会遇到很多别的知识点,我会另外写博文,来总结其他我不会的东西,现在我要做的就是先分析webmagic的代码。(我自己的理解与分析会用黑色字体,而webmagic框架,黄亿华老师的东西,我会用其他颜色来标注上)

WebMagic的结构分为Downloader、PageProcessor、Scheduler、Pipeline四大组件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。WebMagic的设计参考了Scapy,但是实现方式更Java化一些。

既然webmagic的组件由Spider组织起来,那么我就直接从Spider入手吧。由于代码太多了,在这里面复制出来太多了,http://webmagic.io/  这是webmagic的连接,里面什么都有


控制爬虫运转的引擎Spider类:

Spider类给我的感觉是webmagic框架的大集合,将webmagic框架里面所有有用的东西都整合到这一个类里面了,所以黄亿华老师在文档中才会说到WebMagic的结构分为Downloader、PageProcessor、Scheduler、Pipeline四大组件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。而Spider则将这几个组件组织起来,让它们可以互相交互,流程化的执行,可以认为Spider是一个大的容器,它也是WebMagic逻辑的核心。即,webmagic的入口就是Spider,要想实现一个爬虫程序,首先从Spider入手,结合下面的例子会更好的理解“Spider是爬虫的入口,它封装了爬虫的创建、启动、停止、多线程等功能。”!

代码1:

public static void main(String[] args) {
    Spider.create(new GithubRepoPageProcessor())                                 //1定义专门的PageProcessor
              
            .addUrl("https://github.com/code4craft")                             //2从https://github.com/code4craft开始抓 
            
            .setScheduler(new RedisScheduler("localhost"))                       //3设置Scheduler,使用Redis来管理URL队列
              
            .addPipeline(
webmagic学习笔记(4)---webmagic总体架构分析 在笔记(2)、笔记(3)里,我们对webmagic的eclipse开发环境进行了配置并完成了第一个小爬虫的编写,以上算是对webmagic进行了一次感性的认识。从本篇博文开始,开始学习webmagic的实现细节。 一下内容是我在使用了webmagic进行一些小爬虫编写的基础上的一些自己的认识,很大一部分受官方的使用手册影响。说白了,就是自己在理解的基础上重新打了一遍。 首先,祭出总体架构图。 阅读详情

相关推荐

WebMagic爬虫实战项目指南

WebMagic 是一个简单易用且功能强大的数据抓取框架,它具备快速开发、易于维护和扩展的优点,深受广大开发者的喜爱。在这一章中,我们将介绍WebMagic的发展历程、设计理念以及其主要特点和优势。此外,还会探讨WebMagic的框架结构,包括其核心模块的简介和各模块之间的协作关系。WebMagic 的设计初衷是为了简化网络爬虫的开发过程,让开发者能够更加专注于数据抽取的逻辑,而不是底层的实现细节。

weixin_35935514的博客 2306

Webmagic Spider简单框架流程图

原文链接:http://blog.youkuaiyun.com/yasukusury/article/details/78735589

Mid-360与FAST-LIO2实战:从点云采集到高精度建图全流程解析

本文详细解析了使用Livox Mid-360激光雷达与FAST-LIO2算法实现高精度实时建图的全流程。内容涵盖硬件准备、软件环境搭建、算法部署配置、数据采集实战,并重点探讨了多楼层场景下的参数调优与误差抑制策略,为机器人及无人机三维感知应用提供了实用指南。

prometheus9mon的博客 414

BLE蓝牙胎压监测

胎压监测系统新技术

qq_41851841的博客 1255

afe模拟前端的重要性_高性能模拟前端信号链解决方案如何助力医疗超声系统发展...

1942年,奥地利TDussik使用A型超声成像系统穿透性探测颅脑,并于1949年获得头部的超声图像,此举昭示超声系统进入到医疗领域。直到如今,超声系统作为用于人体内部的无创可视化技术,被广泛用于医疗领域。最近一份报告称到2022年,中国医疗超声诊断仪器行业的市场规模预计将达到15.8亿美元,保持6%左右的年均增长率。高性能模拟信号链前端是超声设备的关键组成部分,作为高性能模拟技术主要的提供商AD...

weixin_28799111的博客 1088

RV1126上YOLOv8部署实战:从模型转换到板端推理的完整避坑指南

本文提供了在瑞芯微RV1126芯片上部署YOLOv8目标识别算法的完整实战指南。内容涵盖从模型转换、环境搭建到板端推理代码编写的全流程,重点解析了RKNN-Toolkit使用、量化配置、内存优化及后处理实现等关键环节的常见问题与解决方案,旨在帮助开发者高效避坑,实现边缘AI应用的稳定落地。

pz89012345的博客 568

Cyclone DDS背景技术

DDSI标准与DDS 1.2和1.4标准密切相关,DDSI中的实体与DCPS中的实体之间有明确的对应关系。但是,这种对应关系不是一一对应的。 此处,仅仅对DDSI规范的概念进行描述,暂不涉及Eclipse Cyclone DDS实现的细节。DDSI规范的概念将帮助对互操作性interoperability感兴趣的技术人员了解规范的外延边界和Eclipse Cyclone DDS实现的开始。

pony12的专栏 948

MATLAB - ROS 2 工具箱入门教程

ROS 工具箱提供了一个连接 MATLAB® 和 Simulink® 与机器人操作系统(ROS 和 ROS 2)的接口。利用该工具箱,您可以设计 ROS 节点网络,并将 MATLAB 或 Simulink 生成的 ROS 节点与现有的 ROS 网络相结合。工具箱包括 MATLAB 函数和 Simulink 块,可通过记录、导入和回放 rosbag 文件来可视化和分析 ROS 数据。您还可以连接到实时 ROS 网络,访问 ROS 消息。

机器人控制与仿真应用 3068

Android HAL 架构详解,底层开发不再难

HAL Binder 这套机制牛在哪?性能:一次拷贝,快如闪电。规范:HIDL 让接口定义整齐划一,维护省心。兼容:版本管理做得好,新老设备都能跑。有了这套通信体系,HAL 就像打了通脉,上下贯通,硬件操作变得丝滑无比。通信机制搭好了桥,接下来 HAL 得真正把手伸到硬件上。这部分是 HAL 的 “最后一公里”,直接决定硬件能不能被用起来。HAL 的接口定义是整个体系的灵魂,它决定了上层和底层怎么 “说话”。

大模型大数据攻城狮的专栏 1673

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: 对java接口和抽象类的理解与区别
下一篇: java中继承Thread和实现Runnable的区别
v7595v
博客等级 码龄12年 18粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值