使用WebCollector爬取包图网的音乐素材

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

以上内容摘抄于开源社区对webCollector的介绍,参考文档链接:点击打开链接

webCollector中提供了visit()、addSeed()、addRegex()和start()等方法。

1.visit():

核心方法,在整个抓取过程中,只要抓到一个页面,webCollector都会回调该方法,并传入一个包含了该页面所有信息的page对象。

2.addSeed():

添加种子链接,种子链接会在爬虫启动之前加入到抓取信息中并标记为未抓取状态,可以简单理解为爬虫启动的入口。

3.addRegex():

设定一个url的正则表达式,过滤不必抓取的链接比如.js、.jpg、.css等,或者指定抓取链接的规则。

4.start():

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

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

1:继承BreadthCrawler,重写构造方法和visit()方法

2:在构造方法中设置采集规则

3:在visit()中利用正则表达式匹配抓取到链接,得到我们要的链接

4:根据page对象和网页的结构,获取想要的数据

5:调用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);
    }
}

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

运行结果(象征性数据):


猜你喜欢

转载自blog.csdn.net/hsf15768615284/article/details/79070052