java webmagic 使用_WebMagic的基础使用

安装WebMagic

us.codecraft

webmagic-core

0.7.3

us.codecraft

webmagic-extension

0.7.3

编写TestProcessor定制爬虫逻辑

package test.webmagic.com.test;

import us.codecraft.webmagic.Page;

import us.codecraft.webmagic.Site;

import us.codecraft.webmagic.Spider;

import us.codecraft.webmagic.processor.PageProcessor;

import java.util.ArrayList;

import java.util.List;

/**

* @title: TestProcessor

* @package test.webmagic.com.test

* @author: 彬

* @date: 2020/7/27

* @version: v1.0

* @description:

*/

public class TestProcessor implements PageProcessor{

private Site site = Site.me().setRetryTimes(3).setSleepTime(100);

@Override

public void process(Page page) {

// 创建list存储爬虫爬取的数据

List list = new ArrayList<>();

// 获取列表长度

//*[@id="pjax"]/div[3]/div/article[@class=item] 获取div下article标签中所有class为item的数据

int size = page.getHtml().xpath("//*[@id=\"pjax\"]/div[3]/div/article[@class=item]").all().size();

for (int i = 1; i <= size; i++) {

// 爬取文章标题

//*[@id=\"pjax\"]/div[3]/div/article["+i+"]/h2/a/text() 获取article标签中的h2标签下的a标签中的文本内容

String s = page.getHtml().xpath("//*[@id=\"pjax\"]/div[3]/div/article["+i+"]/h2/a/text()").toString();

// 存储文章标题

list.add(s);

}

System.out.println("------------------------------------------------------------------");

// 设置存储key名称将爬取到的数据放入

page.putField("list",list);

// 设置继续爬取下一页

//*[@id="pjax"]/div[3]/div/nav/a[11]/@href 获取下一页按钮中的a标签的链接

page.addTargetRequests(page.getHtml().xpath("//*[@id=\"pjax\"]/div[3]/div/nav/a[11]/@href").all());

}

@Override

public Site getSite() {

return site;

}

public static void main(String[] args) {

// 创建爬虫

Spider.create(new TestProcessor())

// 设置需要爬取的url

.addUrl("https://88250.b3log.org/?utm_source=hacpai.com")

// 设置使用定制的Pipeline对爬取到的数据进行保存或其他处理

.addPipeline(new TestPipeline())

// 开启5个线程抓取

.thread(5)

.run();

}

}

编写TestPipeline定制抽取的结果处理类

package test.webmagic.com.test;

import us.codecraft.webmagic.ResultItems;

import us.codecraft.webmagic.Task;

import us.codecraft.webmagic.pipeline.Pipeline;

import java.util.List;

/**

* @title: TestPipeline

* @package test.webmagic.com.test

* @author: 彬

* @date: 2020/7/27

* @version: v1.0

* @description:

*/

public class TestPipeline implements Pipeline {

@Override

public void process(ResultItems resultItems, Task task) {

// 取出TestProcessor中保存的文章标题list

List list = resultItems.get("list");

for (String s : list) {

// 打印

System.out.println(s);

}

System.out.println("------------一页的文章的所有标题------------");

}

}

启动看看效果

第一页标题

3abf96d098bd0548c336513c2695d996.png

第二页标题

623e8f5b48d139e79526ad67a8521dbd.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值