WebMagic入门案例
WebMagic总体架构图如下:
项目结构图
配置文件
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>
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
实现类
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入门案例相关推荐
- 9 WebMagic 入门案例
0 环境准备 创建 maven 工程,加入依赖: <?xml version="1.0" encoding="UTF-8"?> <projec ...
- day75,爬虫02,webmagic入门程序,组件介绍:Downloader,PageProcess,pipeline,Scheduler,51jop招聘网站综合案例
一.webmagic入门程序(原理图) 使用方法 1)创建工程 2)添加jar包 <dependencies><!--WebMagic--><dependency> ...
- 2021年大数据Flink(八):Flink入门案例
目录 Flink入门案例 前置说明 API 编程模型 准备工程 pom文件 log4j.properties Flink初体验 需求 编码步骤 代码实现 Flink入门案例 前置说明 API API ...
- Python:Scrapy的安装和入门案例
Scrapy的安装介绍 Scrapy框架官方网址:http://doc.scrapy.org/en/latest Scrapy中文维护站点:http://scrapy-chs.readthedocs. ...
- Vue安装配置以及入门案例
Vue Vue简介 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不 ...
- AOP配置开发入门案例
该AOP开发入门案例采用XML文件方式配置开发(非注解方式)共包含一个xml文件和4个Java类,创建好web工程后引入相应jar包(文末会给出),建好包(若自定义包名注意更改类中的包名),将xml文 ...
- python与人工智能编程-总算明白python人工智能编程入门案例
Python是非常简洁的一种脚本语言,写同样的程序,代码量仅为java的三分一,除了性能没有Java强之外,它的优点还是相当多的.以下是小编为你整理的python人工智能编程入门案例 下载Active ...
- mybatis基于注解的入门案例
mybatis基于注解的入门案例: 把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL语句 同时需要在SqlMa ...
- python截图保存到内存卡_Python画月饼,云上过中秋,天池Python入门案例系列赛开启...
阿里云天池推出了一个Python入门案例系列教程,在此之前他们还推出了一个Python基础训练营. 在天池龙珠计划Python训练营中,天池给学习者详细的介绍了Python的基础和进阶知识,根据学习者 ...
最新文章
- STM32固件库的安装与介绍
- js中new实例化对象内部过程
- 将Java程序变成可执行文件的简单方法
- IE6中Form.submit不提交的问题
- wxWidgets:wxBitmapButton类用法
- VSCode 上竟然也能约会,谈对象了???
- paip. c++ 调用.net dll 最好方式powershell 使用总结.
- 理解DCT与DST【一】:离散傅里叶变换
- android7.1刷supersu,Android怎么刷SuperSU 安卓系统刷SuperSU Pro教程
- 2015年总结与感悟
- ping www.baidu.com时出现正在ping www.a.shifen.com
- CSS line-height属性
- 二进制、八进制、十进制、十六进制的前缀和后缀
- 亿可控_第1章_系统分析与设计
- errcode.php,errCode.php
- java 发邮件 新浪,发邮件时终于可以通过sina的smtp验证了(附代码)
- 【vue2项目实战】---- 1.项目准备
- hp socket android,HP-Socket精简示例
- html中collapse代码怎么写,CSS 面试题: 手写 collapse(折叠) 的 css/html 部分
- 那些热门的计算机语言都做些什么