架构师

您现在的位置是:首页 > 程序人生 > 网络爬虫

网络爬虫

webmagic案例:下载结果到本地磁盘

架构师小跟班 2020-07-18 网络爬虫
需求:获取某IT培训班Python学习资源。代码:开启多线程,设置超时重连,获取到详情页后添加到待爬取容器。package com.jiagou1216.crawler.test;import us.codecraft.webmagic.Pag

需求:

获取某IT培训班Python学习资源。

代码:

开启多线程,设置超时重连,获取到详情页后添加到待爬取容器。

package com.jiagou1216.crawler.test;

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.pipeline.FilePipeline;
import us.codecraft.webmagic.processor.PageProcessor;

/**
 * @author 架构师小跟班 https://www.jiagou1216.com
 * 爬取内容下载到本地磁盘
 * 1、爬取列表页
 * 2、从列表页中获取详情页链接后爬取文章内容
 */
public class CrawlerHandler implements PageProcessor {
    /**
     * 解析页面
     */
    public void process(Page page) {
        //列表页标题
//        page.putField("title", page.getHtml().css("div.main h2", "text").all());
        //图片
        page.putField("pic", page.getHtml().css("img.mask_img1", "src").all());
        //获取超链接
        page.addTargetRequests(page.getHtml().xpath("//div[@class='main']/ul/li").links().all());
        //详情页标题,text()只取文本内容
        page.putField("dTitle", page.getHtml().xpath("/html/body/div[@class='spjcdetail']/div[@class='detail_top']/div[@class='box_In clear']/h2[@class='fl']/text()").all());
        //页面详情
        page.putField("detail", page.getHtml().xpath("/html/body/div[@class='spjcdetail']/div[@class='det_kcpl']/div[@class='box_In clear']/div[@class='fl']/div[@class='main']/div[@class='con con_show']/p").all());
    }

    private Site site = Site.me()
            .setCharset("utf8")
            .setTimeOut(10000)
            .setSleepTime(1000);

    public Site getSite() {
        return site;
    }

    /**
     * 执行爬虫,默认输出到控制台
     */
    public static void main(String[] args) {
        Spider.create(new CrawlerHandler())
                .addUrl("http://yun.xxxxxx.com/course/c27.html?pc")
                .addPipeline(new FilePipeline("D:\\test"))
                .thread(3)
                .run();
    }

}

结果:

文章评论