Java爬虫(三)-- 爬虫框架WebMagic的使用(以csdn页面为例)

article/2025/10/17 3:05:14

一、WebMagic介绍

WebMagic是当前比较主流的一款Java爬虫框架。WebMagic项目代码分为核心和扩展两部分。核心部分(webmagic-core)是一个精简的、模块化的爬虫实现(这部分提供非常简单、灵活的API,在基本不改变开发模式的情况下,编写一个爬虫。),而扩展部分则包括一些便利的、实用性的功能(例如注解模式编写爬虫等)。

二、WebMagic组成

WebMagic的设计目标是尽量的模块化,并体现爬虫的功能特点。
WebMagic的结构分为Downloader、PageProcessor、Scheduler、Pipeline四大组件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。WebMagic的设计参考了Scapy,但是实现方式更Java化一些。
在这里插入图片描述
1.Downloader
Downloader负责从互联网上下载页面,以便后续处理。WebMagic默认使用了Apache HttpClient作为下载工具。

2.PageProcessor
PageProcessor负责解析页面,抽取有用信息,以及发现新的链接。WebMagic使用Jsoup作为HTML解析工具,并基于其开发了解析XPath的工具Xsoup。(在这四个组件中,PageProcessor对于每个站点每个页面都不一样,是需要使用者定制的部分。)

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

4.Pipeline
Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等。WebMagic默认提供了“输出到控制台”和“保存到文件”两种结果处理方案。(Pipeline定义了结果保存的方式,如果你要保存到指定数据库,则需要编写对应的Pipeline。对于一类需求一般只需编写一个Pipeline。)

三、使用webmagic爬取csdn示例:

我们通过csdn首页的推荐文章列表,爬取推荐文章信息。

  1. pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.itcast.crawler</groupId><artifactId>itcast-crawler-webmagic</artifactId><version>1.0-SNAPSHOT</version><dependencies><!--WebMagic--><dependency><groupId>us.codecraft</groupId><artifactId>webmagic-core</artifactId><version>0.7.4</version></dependency><dependency><groupId>us.codecraft</groupId><artifactId>webmagic-extension</artifactId><version>0.7.4</version></dependency></dependencies></project>

2、代码示例:

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Request;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.pipeline.JsonFilePipeline;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.selector.Selectable;
import java.util.List;public class DemoPageProcessor implements PageProcessor {// 部分一:抓取网站的相关配置,包括编码、抓取间隔、重试次数等private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);@Override// process是定制爬虫逻辑的核心接口,在这里编写抽取逻辑public void process(Page page) {// 部分二:定义如何抽取页面信息,并保存下来String level = page.getRequest().getExtra("level");if("parent".equals(level)) {List<Selectable> css = page.getHtml().css("li.clearfix").nodes();for (Selectable selectable : css) {String url =  selectable.xpath("//h2/a/@href").toString();// 部分三:从页面发现后续的url地址来抓取Request request = new Request();request.setUrl(url);request.putExtra("level", "child");page.addTargetRequest(request);}}else if("child".equals(level)){page.putField("title",page.getHtml().xpath("//*[@id=\"articleContentId\"]/text()"));page.putField("url",page.getUrl());List<String> labalList = page.getHtml().xpath("//*[@id=\"mainBox\"]/main/div[1]/div/div/div[2]/div[2]/div/a/text()").all();page.putField("label",labalList);}}@Overridepublic Site getSite() {return site;}public static void main(String[] args) {Request request = new Request();request.setUrl("https://blog.csdn.net/?spm=1001.2014.3001.4477");request.putExtra("level", "parent");Spider.create(new DemoPageProcessor())//从csdn首页开始抓.addRequest(request)
//                .addPipeline(new JsonFilePipeline("E:\\webmagic")).addPipeline(new ConsolePipeline())//开启5个线程抓取.thread(5)//启动爬虫.run();}
}

3、运行结果
由于我们指定了ConsolePipeline,运行主函数可以在控制台看到爬取结果。
在这里插入图片描述
也可以指定其他pipeline,如JsonFilePipeline及路径,运行后可以打开文件夹看到爬取到的结果。
在这里插入图片描述爬取結果:
在这里插入图片描述
当然还可以直接导入数据库中,这里就不做演示了。

更多介绍可以参考开发者的技术网站进行学习:http://webmagic.io/docs/zh/

喜欢的朋友欢迎一键三连。我们一起学习,进步~~


http://chatgpt.dhexx.cn/article/ptPVsDY1.shtml

相关文章

JAVA爬虫框架

WebMagic框架 webmagic结构分为Downloader,pageProcessor,Scheduler,pipeline四大组件 并由splider将他们组织起来 这四大组件对应着爬虫生命周期中的下载 处理 管理 和持久化等功能,依赖 <dependency><groupId>org.springframework.boot</groupId>&l…

一款非常牛逼的Java爬虫框架(高度灵活可配置)

点击关注公众号&#xff0c;利用碎片时间学习 介绍 平台以流程图的方式定义爬虫,是一个高度灵活可配置的爬虫平台 特性 支持Xpath/JsonPath/css选择器/正则提取/混搭提取支持JSON/XML/二进制格式支持多数据源、SQL select/selectInt/selectOne/insert/update/delete支持爬取JS动…

svn 图标不显示 window10

今天打开电脑&#xff0c;同步代码的时候&#xff0c;发现&#xff0c;所有的目录svn的图标都不显示了。 早在几年前遇到过一次&#xff0c;通过clear可以恢复&#xff0c;可是这次几次clear也不管用。 然后&#xff0c;果断打开svn的设置。找到图标的设定。 设定如下&#…

win10 SVN图标不显示 已解决

原因&#xff1a; SVN的图标的排位顺序排在下面去了&#xff0c;导致其它图标占用了它的位置&#xff0c;也就是需要把Tortoise的位置提到上面来 解决办法&#xff1a; winR&#xff0c;输入regedit进入注册表 ctrlf搜索ShellIconOverlayIdentifiers&#xff08;这里需要一会…

SVN文件夹不显示图标解决方法

从svn服务器上将文件夹导出到本地文件之后&#xff0c;svn相关文件夹没有显示相应的图标&#xff0c;解决方法如下。对于SVN来说&#xff0c;因为每个图标都代表着不同的含义&#xff0c;预示着不同的状态&#xff0c;是指示灯的作用&#xff0c;如果没有正确的图标很可能造成数…

win10 SVN 图标不显示的解决办法

win10 SVN 图标不显示的解决办法 前言一、进入注册表二、设置文件名三、重启四、检查五、原理 前言 项目关联到 SVN 之后&#xff0c;一般情况下会有各种各样的状态图标。用来标注本地与 SVN 版本异同情况。但是有时候看不到示意图标&#xff0c;今天记录一下解决办法。 一、…

svn图标没有显示的解决办法

解决办法&#xff1a; 1.打开注册表 键盘输入winr 运行&#xff0c;打开 regedit 2.修改注册表 打开注册表的如下路径&#xff0c;将前几个名字重命名&#xff0c;把名字前面的空格去掉&#xff0c;修改完成后&#xff0c;重启电脑即可。 \HKEY_LOCAL_MACHINE\SOFTWARE\Micr…

SVN、GIT图标不显示解决方案

1、WIN R打开 “运行”&#xff0c;输入"regedit"&#xff0c;打开注册表&#xff0c;然后复制下面的地址到地址栏&#xff0c;如下&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers如上图…

svn的图标突然不显示了

摘抄 https://www.jianshu.com/p/92e8e1f345c0 摘抄 https://www.jianshu.com/p/92e8e1f345c0 摘抄 https://www.jianshu.com/p/92e8e1f345c0 作者&#xff1a;易冷zzz 链接&#xff1a;https://www.jianshu.com/p/92e8e1f345c0 来源&#xff1a;简书 著作权归作者所有。商业转…

解决 win11 git svn 图标问题

不要怀疑&#xff0c;我尝试过网上各种修复方式&#xff0c;也下载过各种修复工具&#xff0c;然都失败了。 别迟疑&#xff0c;以下是最有效的方法&#xff1a; 1、winr&#xff0c;输入 regedit 打开注册表&#xff1b; 2、找到路径【计算机\HKEY_LOCAL_MACHINE\SOFTWARE\M…

Mac SnailSVN不显示状态图标

snailsvn 官网 依次打开 系统设置 -> 扩展 -> 查找程序调整优先级(优先级按降序排序)在我的扩展中没有找到排序功能, 就暂时禁用掉了 有关文件夹操作的拓展. (作者的描述: 如果有多个 Finder 扩展同时监视同一文件夹, 会有优先级问题, 只有最先出现的扩展才能添加图标…

SVN图标消失解决方案

1、首先打开注册表 WINR组合键打开运行窗口&#xff0c;输入regedit命令并回车 2、打开注册表窗口后然后找到以下目录&#xff1a; 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers 3、将我们需要的文件前面加上空…

解决svn文件图标不显示

1.首先检查svn设置中是否设置图标显示 2.winR&#xff0c;输入regedit&#xff0c;调出注册表信息&#xff0c;按下CtrlF,在注册表里搜索“ShellIconOverlayIdentifiers”查看是否存在Tortoise文件&#xff0c;存在直接跳到第四步&#xff0c;不存在&#xff0c;进行第三步 3. …

【SVN】win10下SVN图标不显示

目录 一、现象 二、打开注册表 三、找到SVN路径 四、重启电脑 一、现象 windows10绿色ICON不显示 二、打开注册表 winR 打开运行&#xff0c;输入regedit 三、找到SVN路径 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdent…

svn服务器调整显示图标修改,svn图标不显示可以通过调整Tortoise图标名称的字母顺序来解决...

svn图标不显示可以通过调整Tortoise图标名称的字母顺序来解决 发布时间&#xff1a;2013-06-02 17:28:13 作者&#xff1a;佚名 我要评论 我们可以调整Tortoise图标名称的字母顺序&#xff0c;来提高Tortoise的优先位置&#xff0c;因为Windows 内部就是安装名称的字母顺序…

win10系统解决Svn图标不显示的问题

win10系统解决Svn图标不显示的问题 1.问题 刚才对ruoyi的文件进行了修改但是没有任何的修改的符号。我该如何恢复图标呢&#xff1f; 2.解决策略-修改注册表 出现问题的原因&#xff1a;图标名称优先级不够,不能被使用 第一步&#xff1a;winR&#xff0c;输入regedit 第二…

svn图标不显示

svn图标不显示解决方案 输入win r,在命令行内输入regedit&#xff0c; 如下&#xff1a; 点击确定后&#xff0c;会进入到注册表界面 红框中的就是svn对应状态的图标名字&#xff0c;由于此列表中的名字是按照首字母顺序排布的&#xff0c;所以SVN的图标有可能排在后面&…

关于 SVN状态图标不显示的问题(只显示绿色钩匹配) 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/details/124147620 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 红胖子(红模仿…

SVN状态图标不显示的两种解决办法

文章目录 第一种方法第二种方法 首先情况如下&#xff1a; 这样看不到状态是不是就很难受 本博主最近也是第一次使用SVN做版本控制 然后就出现了这样的情况 后来经过查询才知道SVN刚下载安装后 设置什么的都是默认的 需要手动设置一下就OK啦 第一种方法 我们先在桌面或者资源…

解决SVN左下角图标不显示(图文详解)

SVN中文件左下角图标消失的解决步骤 首先解释以下为什么会发生这样的现象&#xff1a; 因为WindowsExporerShell所支持的Overlay Icon最多十五个&#xff0c;当前面十五个被其他软件或者windows系统自身占用&#xff0c;svn就被顶掉从而无法使用&#xff0c;结果就是图标消失。…