Java 杂谈Java 后台开发Java实战

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

2019-02-17  本文已影响38人  不孤独的字符串

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

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

常用方法解析

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

音乐素材获取

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

源代码:

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

上一篇下一篇

猜你喜欢

热点阅读