美文网首页Java 杂谈Java 后台开发Java实战
闲暇时光,我抓取了一批素材

闲暇时光,我抓取了一批素材

作者: 不孤独的字符串 | 来源:发表于2019-02-17 10:46 被阅读38次

webCollector 提供精简的的 API,只需少量代码即可实现一个功能强大的爬虫。webCollector 致力于维护一个稳定、可扩的爬虫内核,便于开发者进行灵活的二次开发。内核具有很强的扩展性,用户可以在内核基础上开发自己想要的爬虫。

以上内容摘抄于开源社区对webCollector的介绍。webCollector是Java的一个开源爬虫框架,封装了 Jsoup,支持多线程操作,爬取速度非常快。框架提供了visit()、addSeed()、addRegex()和start()等方法方便我们对目标网页进行操作。参考文档链接:https://www.oschina.net/p/webcollector

常用方法解析
  • visit:核心方法,在整个抓取过程中,只要抓到一个页面,webCollector都会回调该方法,并传入一个包含了该页面所有信息的page对象。
  • addSeed:添加种子链接,种子链接会在爬虫启动之前加入到抓取信息中并标记为未抓取状态,可以简单理解为爬虫启动的入口。
  • addRegex:设定一个url的正则表达式,过滤不必抓取的链接比如.js、.jpg、.css等,或者指定抓取链接的规则。
  • start:启动爬虫,start(5)表示抓取的深度为5层。

爬虫的深度可以理解为:当只添加了一个种子, 抓这个种子链接为第1层,解析抓取这个种子链接得到数据,根据正则过滤数据得到想要的链接保存至待抓取记录,抓取这些新得到的链接则为第2层,依次类推。

音乐素材获取

这里我使用webCollector抓取了包图网上的音乐素材(标题、访问链接),项目使用maven管理jar包,实现思路整体如下:

  • 继承BreadthCrawler,重写构造方法和visit()方法
  • 在构造方法中设置采集规则
  • 在visit()中利用正则表达式匹配抓取到链接,得到我们要的链接
  • 根据page对象和网页的结构,获取想要的数据
  • 调用start()方法启动爬虫

源代码:

public class MusicCrawler extends BreadthCrawler{

    /**
     * 重写构造方法
     * @param crawlPath
     * @param autoParse
     */
    public MusicCrawler(String crawlPath, boolean autoParse) {
        super(crawlPath, autoParse);
        //添加种子页面
        this.addSeed("http://ibaotu.com/peiyue/11-0-0-0-0-1.html");
        //设置采集规则的类型网页
        this.addRegex("http://ibaotu.com/peiyue/11-[0-9]+-[0-9]+-[0-9]+-[0-9]+-[0-9]+\\.html");
        //设置线程数
        this.setThreads(5);
        //不匹配图片
        this.addRegex("-.*\\.(jpg|png|gif).*");
        //爬取URL上限
        getConf().setTopN(50000);
    }
 
    public void visit(Page page, CrawlDatums next) {
        String url = page.url();
        if(page.matchUrl("http://ibaotu.com/peiyue/11-[0-9]+-[0-9]+-[0-9]+-[0-9]+-[0-9]+\\.html")){
            String title = page.select("div[class=audio-info]>a").first().text();
            String audio = page.select("audio>source").attr("src");
            System.out.println("title:\n"+title);
            System.out.println("audio:\n"+audio);
        }
    }
 
    public static void main(String[] args) throws Exception{
        MusicCrawler musicCrawler = new MusicCrawler("crawl",true);
        //设置爬虫深度
        musicCrawler.start(5);
    }
}
运行效果.png

最后源码已托管到码云,访问地址:https://gitee.com/hsfeng/musicCrawler

相关文章

  • 闲暇时光,我抓取了一批素材

    webCollector 提供精简的的 API,只需少量代码即可实现一个功能强大的爬虫。webCollector ...

  • 早餐手抓饼海报文案

    闲暇时光,朋友的朋友叫朋友帮忙做一张手抓饼的海报,设计师朋友很是苦恼要作图还要想文案,叫帮忙写个文案,闲暇之余,就...

  • 手账小素材(一)

    闲暇之余,归纳了一些小素材。

  • 我的闲暇时光

    当我不自觉地敲下这几个字的时候,心头是满足和欢喜的,像一颗饱胀的露珠在清晨的草叶上莹莹发光,有一种遗世独存的孤傲和...

  • 我的闲暇时光

    01 我一边听着歌,一边看着专业书。突然我有点不想看了,但还是坚持着,坚持一下就好了。 我在心里这样想道。当看见我...

  • 我的闲暇时光

    不管世界多么热闹,热闹永远只占据世界的一小部分,热闹之外的世界无边无际,那里有我的位置——一个安静的位置。因为每个...

  • 我的闲暇时光

    有了娃的女人还有自己的闲暇时间吗?我是有多久没看电视了?半年了吧。除了工作就是娃,这就是传说中的孩奴?这是我最新听...

  • 我的闲暇时光

    2020-9-13 周末在家,除了吼熊孩子的作业外,就是伺候我家的花花草草。 新购置了了绿植,装好盆,...

  • 我的闲暇时光

    因为疫情,好长时间,大家都不得不宅家里,别乱走动就是最好的防疫,就是给社会少添麻烦,就是给社会作最好的贡献。那段时...

  • 我要断舍离

    休病假的日子里,大把闲暇的时光拿手抓,我百无聊赖,把家里翻了个底儿超天,整理书、整理衣柜、整理鞋子、整理床罩被褥、...

网友评论

    本文标题:闲暇时光,我抓取了一批素材

    本文链接:https://www.haomeiwen.com/subject/nntgeqtx.html