WebMagic 爬虫框架学习

java网络爬虫框架:Webmagic学习总结 网络爬虫常用的技术(Java) 底层实现Jsoup+HttpClient 开源框架Webmagic Webmagic是一个开源的爬虫框架,用于简化爬虫的开发流程,使开发者更专注与业务逻辑的开发. 主要特色: 完全模块化的设计,强大的扩展性. 核心简单但是涵盖爬虫的全部流程,灵活而强大 提供丰富的抽取页面API 无配置,但是可通过POJO+注解形式实现一个爬虫 支持多线程 支持分布式 支持爬虫... 阅读详情

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

1.2 总体架构

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

而Spider则将这几个组件组织起来,让它们可以互相交互,流程化的执行,可以认为Spider是一个大的容器,它也是WebMagic逻辑的核心。

WebMagic总体架构图如下:

image

1.2.1 WebMagic的四个组件

1.Downloader

Downloader负责从互联网上下载页面,以便后续处理。WebMagic默认使用了Apache HttpClient作为下载工具。

2.PageProcessor

PageProcessor负责解析页面,抽取有用信息,以及发现新的链接。WebMagic使用Jsoup作为HTML解析工具,并基于其开发了解析XPath的工具Xsoup。

在这四个组件中,PageProcessor对于每个站点每个页面都不一样,是需要使用者定制的部分。

3.Scheduler

Scheduler负责管理待抓取的URL,以及一些去重的工作。WebMagic默认提供了JDK的内存队列来管理URL,并用集合来进行去重。也支持使用Redis进行分布式管理。

除非项目有一些特殊的分布式需求,否则无需自己定制Scheduler。

4.Pipeline

Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等。WebMagic默认提供了“输出到控制台”和“保存到文件”两种结果处理方案。

Pipeline定义了结果保存的方式,如果你要保存到指定数据库,则需要编写对应的Pipeline。对于一类需求一般只需编写一个Pipeline。

1.2.2 用于数据流转的对象

1. Request

Request是对URL地址的一层封装,一个Request对应一个URL地址。

它是PageProcessor与Downloader交互的载体,也是PageProcessor控制Downloader唯一方式。

除了URL本身外,它还包含一个Key-Value结构的字段extra。你可以在extra中保存一些特殊的属性,然后在其他地方读取,以完成不同的功能。例如附加上一个页面的一些信息等。

2. Page

Page代表了从Downloader下载到的一个页面——可能是HTML,也可能是JSON或者其他文本格式的内容。

Page是WebMagic抽取过程的核心对象,它提供一些方法可供抽取、结果保存等。在第四章的例子中,我们会详细介绍它的使用。

3. ReusltItems

ReusltItems相当于一个Map,它保存PageProcessor处理的结果,供Pipeline使用。它的API与Map很类似,值得注意的是它有一个字段skip,若设置为true,则不应被Pipeline处理。

1.2.3 控制爬虫运转的引擎--Spider

Spider是WebMagic内部流程的核心。Downloader、PageProcessor、Scheduler、Pipeline都是Spider的一个属性,这些属性是可以自由设置的,通过设置这个属性可以实现不同的功能。Spider也是WebMagic操作的入口,它封装了爬虫的创建、启动、停止、多线程等功能。下面是一个设置各个组件,并且设置多线程和启动的例子。详细的Spider设置请看第四章——爬虫的配置、启动和终止。

public static void main(String[] args) {
    Spider.create(new GithubRepoPageProcessor())
            //从https://github.com/code4craft开始抓    
            .addUrl("https://github.com/code4craft")
            //设置Scheduler,使用Redis来管理URL队列
            .setScheduler(new RedisScheduler("localhost"))
            //设置Pipeline,将结果以json方式保存到文件
            .addPipeline(new JsonFilePipeline("D:\\data\\webmagic"))
            //开启5个线程同时执行
            .thread(5)
            //启动爬虫
            .run();
}

1.2.4 快速上手

上面介绍了很多组件,但是其实使用者需要关心的没有那么多,因为大部分模块WebMagic已经提供了默认实现。

一般来说,对于编写一个爬虫,PageProcessor是需要编写的部分,而Spider则是创建和控制爬虫的入口。在第四章中,我们会介绍如何通过定制PageProcessr来编写一个爬虫,并通过Spider来启动。


攻防实战之Confluence后利用 这边管理员密码是密文加密在数据库中,解不开,因此解决的思路是将管理员用户密码修改为已知明文密码的密文(这边不能直接在数据库中添加字段,关系型数据库在单表中添加一条字段可能会出现问题),登录上后台以后,添加用户并加入管理员组,最后将管理员密码还原。Confluence的后利用主要问题在于在Linux中搭建时,默认是Confluence用户权限,如下图所示,而confluence在linux中是没有写权限的,这也就是为什么有些人发现可以执行命令但是shell写不进去。至此admin的密码被改为了123123。 阅读详情

相关推荐

从《新程序员》系列看程序员职业发展趋势与成长路径

在信息技术日新月异的当下,软件开发行业蓬勃发展,程序员作为行业的核心力量,其成长与发展路径备受瞩目。《新程序员》系列杂志应运而生,以其前瞻性的视角、丰富多元的内容,为广大程序员尤其是新程序员提供了洞察行业趋势、学习前沿技术、汲取前辈经验的宝贵窗口。该系列杂志由优快云精心打造,自推出以来,便在开发者群体中引发了强烈反响。《新程序员》系列内容涵盖了从基础技术知识的深入解读,到行业前沿趋势的精准预测;从优秀开发者的成长历程分享,到各大企业数字化转型的实践案例剖析等多个维度。

AllenLV的博客 2259

WebMagic的学习(三)——使用和定制Pipeline,爬取数据存储到MySql数据库

一、Pipeline介绍 Pipeline的接口定义如下: public interface Pipeline { // ResultItems保存了抽取结果,它是一个Map结构, // 在page.putField(key,value)中保存的数据,可以通过ResultItems.get(key)获取 public void process(ResultItems...

有问题请发邮箱dengyifanlittle@163.com进行讨论 5976

金蝶云星空应用开发初级考试题目汇总

摘要:本文为金蝶云星空应用开发初级考试题目汇总

2401_86113757的博客 3799

Java爬虫框架WebMagic的使用总结

最近,项目做一个公司新闻网站,分为PC&移动端(h5),数据来源是从HSZX与huanqiu2个网站爬取,主要使用Java编写的WebMagic作为爬虫框架,数据分为批量抓取、增量抓取,批量抓当前所有历史数据,增量需要每10分钟定时抓取一次,由于从2个网站抓取,并且频道很多,数据量大,更新频繁;开发过程中遇到很多的坑,今天腾出时间,感觉有必要做以总结。 工具说明: 1

爱分享的淘金达人 2万+

别慌!Oracle MOS登录页面大变样?5分钟搞定新旧账号登录全流程

本文详细解析Oracle MOS登录页面改版后的新旧账号登录流程,帮助用户快速适应账号体系变革。针对传统MOS账号和OCI账号的不同应用场景,提供5分钟内完成无缝切换的实用指南,包括登录步骤、书签设置和密码管理策略,助力数据库管理用户高效访问Oracle技术支持资源。

weixin_30275415的博客 517

Hermes Agent Windows安装教程:本地智能体离线部署实战

本地智能体(Local Agent)是一种运行在用户设备端、无需云端依赖即可响应自然语言指令并自动化执行任务的轻量级AI运行时框架。其核心原理基于配置驱动的任务监听与脚本调用机制,通过服务化驻留实现持续响应能力,技术价值在于保障数据隐私、规避API调用限制、适配内网及老旧系统环境。典型应用场景包括财务报表自动整理、科研仪器数据归档、IT资产变更通知等Windows桌面自动化需求。本文聚焦Hermes Agent这一主流开源实现,围绕Windows平台特有的服务注册、权限模型、杀软拦截、中文路径与YAML编码

weixin_34411563的博客 433

WebMagic爬虫Demo尝试(二) - 多页面

上篇记录了第一个Demo,使用WebMagic进行了单页面的信息获取,在控制台输出了信息,这次来进行多页面的信息获取,然后存储到数据库,使用Mybatis框架,mysql5.5库 pom.xml,以及log4j的配置参见上文 这里记录mybatis-config.xml的配置以及数据库地址的配置 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc...

Zachariahs的博客 2070

我想自己组装一台服务器,微调大模型通义千问2.5 Omni 72B,但是我是个人购买,资金非常有限,最省的方案

阶段动作✅ 推理用 GGUF + llama.cpp + 4090 加载 14B INT4✅ 微调训练 Qwen2.5-7B-Chat,使用 LoRA / QLoRA❌ 放弃Qwen2.5-Omni-72B 全量微调(显存需求 >160G,不现实)

AngelCryToo的专栏 2828

【定制开发】【M5】Python爬虫 - 获取【一品威客】最新发布需求,并实时通知用户

背景 有个朋友计划拓展业务渠道,准备在众包平台猪八戒上接单,他的主营产品是微信小程序,因此他想第一时间收到客户发出的需求信息,然后第一时间联系客户,这样成交率才能够得到保障,否则单早都被其他同行接完了,他的黄花菜也就都凉了。 开发环境 开发语言 Python ,开发架构Scrapy,非 Python 莫属,数据采集的神器! 开发工具 PyCharm; 功能设计 实时通知:采用发邮件方式通知,将邮箱绑定到微信,实现实时通知的效果。 过滤模块:根据标题和内容双重过滤关键词,不符合要求的订单丢弃.

记录项目交付的日常 1926

TortoiseGit之配置密钥

基于github的开发必须要用到rsa密钥,因此需要用到TortoiseGit的putty key generator工具,来生成既适用于github的rsa密钥也适用于TortoiseGit的ppk密钥。

欧文的博客 2080

绕过限制?实测修改UA在PC端运行微信小程序的可行性及风险

本文探讨了通过修改User-Agent(UA)在PC端运行微信小程序的技术可行性及风险。分析了小程序设备限制的技术原理,包括`wx.getSystemInfo`API和UA检测机制,并提供了多种修改方案及其局限性。同时强调了潜在的安全和法律风险,推荐使用官方模拟器或安卓模拟器等更安全的替代方案。

weixin_30879169的博客 364

Python网络爬虫原理及实践

scrapy.cfg是scrapy框架的入口文件,settings节点指定爬虫的配置信息,deploy节点用于指定scrapyd服务的部署路径。

mate1357的博客 1880

YOLOv11改进有效系列目录 - 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制 - 针对多尺度、小目标、遮挡、恶劣天气等问题

在一些特定情况下,目标检测任务由于多种因素的影响,变得更加复杂和困难。以下是几类常见的困难目标检测场景:1. 小目标检测定义:小目标检测是指当目标在图像中的占比非常小时,模型需要准确识别和定位这些目标。典型场景包括远程监控、卫星图像分析等。挑战1. 低分辨率:由于目标在图像中占据像素较少,细节缺失,特征提取难度增加。2. 特征不足:小目标缺乏明显的形状和纹理特征,容易被复杂背景淹没。3. 检测难度大:由于小目标与背景之间的对比度较低,误检的几率上升。4. 数据不平衡。

qq_64693987的博客 4万+

WebMagic爬虫框架学习

参考博文:http://webmagic.io/docs/zh/posts/ch1-overview/architecture.html WebMagic in Action Little book of WebMagic. WebMagic是我业余开发的一款简单灵活的爬虫框架。基于它你可以很容易的编写一个爬虫。 这本小书以WebMagic入手,一方面讲解WebMagic的

超越创之星的博客 7828

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java爬虫框架之WebMagic的学习总结

WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,可以快速开发出一个高效、易维护的爬虫。

积跬步,至千里。 2539

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java爬虫框架webmagic学习一

web magic简介 爬虫框架webmagic webmagic的设计目标是尽量的模块化,并体现爬虫的功能特点,这部分提供非常简单、灵活的API,在基本不改吧开发模式的情况下,编写一个爬虫。 Webmagic的结构分为Downloader、PageProcessor、Scheduler、Pipeline四大组件,并由Spider将他们彼此组织起来,这四大组件对应爬虫声明周期中的下载、处理、管理、和持久化等功能。而Spider则将这几个组件组织起来,让他们可以互相交互,流程化的执行,可以认为Spider是

562

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java爬虫框架webmagic学习笔记

一、前言 最近毕设要用到爬虫逻辑,感觉用python学习周期会比较长,所以直接去网上找了一些爬虫逻辑,先记录下来留到以后忘记了可以直接用。 二、框架简介 webmagic的是一个无须配置、便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫。webmagic采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线程抓取,分布式抓取,并支持自动重试、自定义UA/cookie等功能。ps:自己上手弄了一个是真的很方便,而且很适合新手小白。 不多介

qq_45036013的博客 496

(10)Java爬虫框架webmagic学习笔记

Java爬虫框架webmagic学习笔记 参考自:webmagic文档 webmagic的主要特色: 完全模块化的设计,强大的可扩展性。 核心简单但是涵盖爬虫的全部流程,灵活而强大,也是学习爬虫入门的好材料。 提供丰富的抽取页面API。 无配置,但是可通过POJO+注解形式实现一个爬虫。 支持多线程。 支持分布式。 支持爬取js动态渲染的页面。 无框架依赖,可以灵活的嵌入到项目中去。 总体架构...

好女绪的博客 686

Java爬虫框架WebMagic学习

Java爬虫框架WebMagic学习一、认识WebMagic1.总体架构1.1.四大组件1.2.数据流转的对象二、WebMagic爬虫项目简单Demo1.网页分析2.代码实现2.1.添加依赖2.2.实现PageProcessor2.3.编写ConsolePipeline2.4.爬虫的配置、启动和终止2.5.运行结果三、总结 一、认识WebMagic 简介:一款简单灵活的爬虫框架 官方中文文档: h...

颜丶苒苒的博客 1032

java 爬虫学习 笔记一 使用爬虫框架 WebMagic

1.WebMagic 官方文档地址  http://webmagic.io/docs/zh/ 引入WebMagic的jar 这里采用pom形式  <!-- 使用webmagic所用的jar -->   <dependency>     <groupId>us.codecraft</groupId>     <artifactId>we...

hanzl1的博客 1766

八、学习爬虫框架WebMagic(四)---使用webmagic+Selenium爬取小说

一、案例说明   本案例以爬取某小说网站某本小说为例(PS:避免商业问题,这里不提小说网站名) 二、先期准备   关于 webmagic+Selenium 的相关依赖,参见 七、学习爬虫框架WebMagic(三)—webmagic+Selenium爬取动态页面 三、构建项目 (一)项目分析   在某小说网站找到一本小说的列表,如下:   根据页面,然后分析网页源码,可知在这个页面中,下一页的网址...

panchang199266的博客 2663

python爬虫与java爬虫_java爬虫框架webmagic学习(一)

1. 爬虫的分类:分布式和单机分布式主要就是apache的nutch框架,java实现,依赖hadoop运行,学习难度高,一般只用来做搜索引擎开发。java单机的框架有:webmagic和webcollector以及crawler4jpython单机的框架:scrapy和pyspider2. 作者自己在官方教程也说到了“WebMagic的设计参考了业界最优秀的爬虫Scrapy”,说明精通scrap...

weixin_39789370的博客 255

webmagic保存html页面,WebMagic 抓取图片并保存至本地

1.近期接触到java 爬虫,开源的爬虫框架有很多,其中WebMagic 是国产的,文档也是中文的,网上资料很多,便于学习,功能强大,可以在很短时间内实现一个简单的网络爬虫。具体可参考官网 http://webmagic.io/docs/zh/。今天参考官网和网上资料实现了抓取网页图片,并保存在本地简单入门实例,日后再做进一步深入探讨。在实现过程中参考了一些网上资料,主要是理解原理和工作方式。2....

weixin_39984952的博客 592

java爬虫框架webmagic学习笔记(二)

java爬虫框架webmagic学习笔记(二)一、前言二、项目架构三、核心代码四、小结 一、前言 最近帮室友爬取一批数据,但是因为她需要整理成表格发给别人,并且本人电脑因为重装系统还没来得及装数据库,所以只能重写一下pipLine接口的process方法,里面记录保存数据的逻辑,调用execl工具类在指定路径下生成表格文件,特此记录一下。 二、项目架构 因为我是直接在原来三层架构的项目里面改的,只是注释掉了我不需要的部分让项目能够跑起来,所以我下面只贴关键代码。 三、核心代码 要导入的依赖:pom.xml文

qq_45036013的博客 239
上一篇: Java线程池使用说明
下一篇: 通过httpClient实现google翻译
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值