Webmagic爬虫学习笔记

1 篇文章 0 订阅

官方文档

暂时了解的内容, 总结一下如下图:
在这里插入图片描述

webmagic是参考Scrapy,实现由HttpClient,Jsoup等。

四大组件:Downloader、pageProcessor、Scheduler、Pipeline组件合并完成多线程的任务。以实现对爬虫的功能进行定制。

Spider是将这几个组件组织在一起,可以认为它是一个大容器,是webmagic的核心

Scheduler

  • 对待抓取的URL队列进行管理

  • 对已抓取的URL进行去重

核心:webmagic-core包中。其他包则是该包的扩展

实用:虽然核心功能简单,但也有自己的扩展方式,如基于注解模式的爬虫开发

  • Requst: 是对URL地址的一层封装,一个request对应一个URL地址。它是PageProcessor与Downloader交互的载体,也是PageProcessor控制Downloader唯一方式(PageProcessor解析页面获取url,将url给了Downloader去下载)。
  • Page: 代表从Downloader下载的一个页面,可能是HTML,也可能是JSON或者其它格式的内容。
  • ResultItems: 相当于Map, 保存了PageProcess解析处理的结果,供Pipeline使用。
addTargetRequests 抓取超链接
putField 结果属性
site 设置请求信息

后续更新…
2020-04-27 晚
官方图片如下:
在这里插入图片描述
PageProcessor 负责解析页面,抽取有用信息,以及发现新的链接。需要自己定义。

Scheduler 负责管理待抓取的URL,以及一些去重的工作。一般无需自己定制Scheduler。

Pipeline 负责抽取结果的处理,包括计算、持久化到文件、数据库等。

Downloader 负责从互联网上下载页面,以便后续处理。一般无需自己实现。

WebMagic框架支持多种抽取方式,包括xPath、css选择器、正则表达式。

例子:

public class DouyuProcessor implements PageProcessor {

    private Site site = Site
            .me()
            .setDomain("www.douyu.com")
            .setSleepTime(3000)
            .setUserAgent(
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31");

    @Override
    public Site getSite() {
        return site;
    }

    @Override
    public void process(Page page) {
        // 这个page就是webmagic下载的页面代码,对它用xpath语法操作
        List<String> all = page.getHtml().xpath("//*[@id=\"listAll\"]/div/ul/li/div/a/div/div/h3/text()").all();
        for(String str : all){
            System.out.println(str);
        }
        System.out.println("总个数为: " + all.size());
        //page.putField("msg",page.getHtml().xpath("//*[@id=\"listAll\"]/div/ul/li/div/a/div/div/h3/text()").all());
    }

    public static void main(String[] args) {
        Spider.create(new DouyuProcessor()).addUrl("https://www.douyu.com/g_LOL")
                .run();
    }
}

效果:

在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值