WebMagic总体架构图如下:

项目结构图

配置文件

  1. pom.xml

    <?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>com.xiaoge</groupId><artifactId>xiaoge-crawler-webmagic</artifactId><version>1.0-SNAPSHOT</version><dependencies><!-- webmagic 核心包 --><!-- https://mvnrepository.com/artifact/us.codecraft/webmagic-core --><dependency><groupId>us.codecraft</groupId><artifactId>webmagic-core</artifactId><version>0.7.3</version></dependency><!-- webmagic 扩展包 --><!-- https://mvnrepository.com/artifact/us.codecraft/webmagic-extension --><dependency><groupId>us.codecraft</groupId><artifactId>webmagic-extension</artifactId><version>0.7.3</version></dependency></dependencies></project>
    
  2. log4j.properties

    log4j.rootLogger=INFO,A1
    log4j.appender.A1=org.apache.log4j.ConsoleAppender
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n
    

实现类

  1. JobProcessor

    package com.xiaoge.webmagic.test;import us.codecraft.webmagic.Page;
    import us.codecraft.webmagic.Site;
    import us.codecraft.webmagic.Spider;
    import us.codecraft.webmagic.pipeline.FilePipeline;
    import us.codecraft.webmagic.processor.PageProcessor;/*** @Author: 潇哥* @DateTime: 2020/10/2 下午10:14* @Description: TODO*/
    public class JobProcessor implements PageProcessor {/*** 负责解析页面, 抽取元素/获取链接* @param page page*/public void process(Page page) {/*解析元素*/// 解析返回的数据page, 并且把解析的结果放到ResultItems中// css选择器page.putField("a", page.getHtml().css("a[rel=nofollow]").all());// XPathpage.putField("a2", page.getHtml().xpath("//a[@rel=nofollow]"));// 正则表达式page.putField("a3", page.getHtml().css("a[rel=nofollow]").regex(".*我们.*").all());/*处理结果的api*/// get/toString都是处理结果的第一条page.putField("a4", page.getHtml().css("a[rel=nofollow]").regex(".*我们.*").get());page.putField("a5", page.getHtml().css("a[rel=nofollow]").regex(".*我们.*").toString());// 获取所有数据page.putField("a6", page.getHtml().css("a[rel=nofollow]").regex(".*我们.*").all());/*获取链接page.addTargetRequests抓取page.getHtml().css("a[rel=nofollow]").links().all()获取的所有链接网址*/page.addTargetRequests(page.getHtml().css("a[rel=nofollow]").links().all());page.putField("url", page.getHtml().css(".title").all());}/*** 配置*/// Site是爬虫的配置, Site.me()可以对爬虫进行一些配置private Site site = Site.me().setCharset("utf8") // 设置编码.setTimeOut(10000) // 设置超时时间 单位/毫秒.setRetrySleepTime(3000) // 设置重试的间隔时间  单位/毫秒.setSleepTime(3)    // 设置重试次数;public Site getSite() {return site;}/*** 启动与设置Pipeline保存数据的方式* @param args*/// 主函数, 执行爬虫, 不写输出到哪里(默认输出到控制台)public static void main(String[] args) {// 创建解析器(这个解析器是自己写的解析器)Spider.create(new JobProcessor())// 设置爬取数据的页面.addUrl("https://plus.jd.com/index?flow_system=appicon&flow_entrance=appicon11&flow_channel=pc")// 以文件的形式输出, 没设置默认使用内置的控制台pipeline输出到控制台.addPipeline(new FilePipeline("/Users/xiaoge/Desktop/result"))// 设置5条线程做处理.thread(5)// 执行爬虫.run();}}
    

WebMagic入门案例相关推荐

  1. 9 WebMagic 入门案例

    0 环境准备 创建 maven 工程,加入依赖: <?xml version="1.0" encoding="UTF-8"?> <projec ...

  2. day75,爬虫02,webmagic入门程序,组件介绍:Downloader,PageProcess,pipeline,Scheduler,51jop招聘网站综合案例

    一.webmagic入门程序(原理图) 使用方法 1)创建工程 2)添加jar包 <dependencies><!--WebMagic--><dependency> ...

  3. 2021年大数据Flink(八):Flink入门案例

    目录 Flink入门案例 前置说明 API 编程模型 准备工程 pom文件 log4j.properties Flink初体验 需求 编码步骤 代码实现 Flink入门案例 前置说明 API API ...

  4. Python:Scrapy的安装和入门案例

    Scrapy的安装介绍 Scrapy框架官方网址:http://doc.scrapy.org/en/latest Scrapy中文维护站点:http://scrapy-chs.readthedocs. ...

  5. Vue安装配置以及入门案例

    Vue Vue简介 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不 ...

  6. AOP配置开发入门案例

    该AOP开发入门案例采用XML文件方式配置开发(非注解方式)共包含一个xml文件和4个Java类,创建好web工程后引入相应jar包(文末会给出),建好包(若自定义包名注意更改类中的包名),将xml文 ...

  7. python与人工智能编程-总算明白python人工智能编程入门案例

    Python是非常简洁的一种脚本语言,写同样的程序,代码量仅为java的三分一,除了性能没有Java强之外,它的优点还是相当多的.以下是小编为你整理的python人工智能编程入门案例 下载Active ...

  8. mybatis基于注解的入门案例

    mybatis基于注解的入门案例:             把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL语句             同时需要在SqlMa ...

  9. python截图保存到内存卡_Python画月饼,云上过中秋,天池Python入门案例系列赛开启...

    阿里云天池推出了一个Python入门案例系列教程,在此之前他们还推出了一个Python基础训练营. 在天池龙珠计划Python训练营中,天池给学习者详细的介绍了Python的基础和进阶知识,根据学习者 ...

最新文章

  1. STM32固件库的安装与介绍
  2. js中new实例化对象内部过程
  3. 将Java程序变成可执行文件的简单方法
  4. IE6中Form.submit不提交的问题
  5. wxWidgets:wxBitmapButton类用法
  6. VSCode 上竟然也能约会,谈对象了???
  7. paip. c++ 调用.net dll 最好方式powershell 使用总结.
  8. 理解DCT与DST【一】:离散傅里叶变换
  9. android7.1刷supersu,Android怎么刷SuperSU 安卓系统刷SuperSU Pro教程
  10. 2015年总结与感悟
  11. ping www.baidu.com时出现正在ping www.a.shifen.com
  12. CSS line-height属性
  13. 二进制、八进制、十进制、十六进制的前缀和后缀
  14. 亿可控_第1章_系统分析与设计
  15. errcode.php,errCode.php
  16. java 发邮件 新浪,发邮件时终于可以通过sina的smtp验证了(附代码)
  17. 【vue2项目实战】---- 1.项目准备
  18. hp socket android,HP-Socket精简示例
  19. html中collapse代码怎么写,CSS 面试题: 手写 collapse(折叠) 的 css/html 部分
  20. 那些热门的计算机语言都做些什么

热门文章

  1. Ubuntu安装配置06|安装配置文本编辑器Sublime Text
  2. 主编编辑器如何收藏素材?
  3. 『Android』网络请求数据与JSON解析
  4. B2B常见名词以及英文缩写
  5. 数据库开发之酒店管理系统08入住登记查询
  6. flutter ios打包_安卓开发者如何使用Flutter打包IOS应用
  7. 浅记《网络科学导论》知识点
  8. 华为服务器系统蓝屏,云服务器蓝屏
  9. 非体制拿到浙大MPA提前批面试A资格经验分享
  10. 系统启动之——grub4dos篇