WebMagic初探,了解爬虫

在使用webMagic之前,先了解一下几个基本的知识

  1. 爬虫,可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来。
  2. Xpath
    Xpath的全称是 XML Path Language,XPath是一种称为路径表达式的语法,定位到XML或HTML中的任意一个或多个节点元素,获取元素的各项信息,在解析结构比较规整的XML或HTML文档的时候,用XPath路径表达式非常快速、方便。
    对于概念看不懂也没关系,可以先看下面的代码然后再回过头来理解这些概念,这样可以加深对爬虫的理解

下面是WebMagic的架构图,从图中可以看出WebMagic有四个组件


  1. WebMagic组件
    a. Downloader
    Downloader负责从互联网上下载页面,以便后续处理。WebMagic默认使用了Apache HttpClient作为下载工具。

b. PageProcessor
PageProcessor负责解析页面,抽取有用信息,以及发现新的链接。WebMagic使用Jsoup作为HTML解析工具,并基于其开发了解析XPath的工具Xsoup。

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

d. Pipeline
Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等。WebMagic默认提供了“输出到控制台”和“保存到文件”两种结果处理方案。

  1. 导入依赖项目使用的是Gradle
    testCompile group: 'junit', name: 'junit', version: '4.9'
    compile group: 'us.codecraft', name: 'webmagic-core', version: '0.7.3'
    compile group: 'us.codecraft', name: 'webmagic-extension', version: '0.7.3'
  1. 代码
public class CnBlogProcessor implements PageProcessor {
    //抓取网站的相关配置、编码、抓取间隔、重试次数等

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

    //计数器
    private static int count = 0 ;

    @Override
    public void process(Page page) {
        //判断连接是否满足
        boolean flag = page.getUrl().regex("https://www.cnblogs.com/[a-z 0-9 -]+/p/[0-9]{7}.html").match();
        if(!flag){
            //加入满足条件的连接  xpath选取要爬取的div
            page.addTargetRequests(page.getHtml().xpath("//*[@id=\"post_list\"]/div/div[@class='post_item_body']/h3/a/@href").all());
        }else {
            System.out.println("抓到的内容\n"+page.getHtml());
            count++ ;
        }
    }

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

    public static void main(String[] args) {
        Spider.create(new CnBlogProcessor()).addUrl("https://www.cnblogs.com/").thread(5).run();
        System.out.println("结束了"+count);
    }
}

这是一个简单爬取博客园文章的小demo,主要的重点是正则的编写以及熟悉xpath的基本概念,在要爬取指定的内容时,使用xpath可以很方便的定位到要取得元素,网页中标签的xpath怎么获取呢?首先打开开发者工具,然后选定某一元素


因为要选中鼠标右键,截图的时候鼠标会跳动一下,没办法截全。这篇文章带大家简单入门,下一篇文章带大家深入了解,如有错误,请指正
WebMagic官方文档

你可能感兴趣的:(WebMagic初探,了解爬虫)