文档章节

WEBCOLLECTION爬图片

嗡嗡作响
 嗡嗡作响
发布于 2017/05/18 19:00
字数 323
阅读 3
收藏 0
public class DemoImageCrawler extends BreadthCrawler {

    //用于保存图片的文件夹
    File downloadDir;

    //原子性int,用于生成图片文件名
    AtomicInteger imageId;

    /**
     * 
     * @param crawlPath 用于维护URL的文件夹
     * @param downloadPath 用于保存图片的文件夹
     */
    public DemoImageCrawler(String crawlPath, String downloadPath) {
        super(crawlPath, true);
        downloadDir = new File(downloadPath);
        if(!downloadDir.exists()){
            downloadDir.mkdirs();
        }
        computeImageId();
    }

    @Override
    public void visit(Page page, CrawlDatums next) {
        //根据http头中的Content-Type信息来判断当前资源是网页还是图片
        String contentType = page.getResponse().getContentType();
        if(contentType==null){
            return;
        }else if (contentType.contains("html")) {
            //如果是网页,则抽取其中包含图片的URL,放入后续任务
            Elements imgs = page.select("img[src]");
            for (Element img : imgs) {
                String imgSrc = img.attr("abs:src");
                next.add(imgSrc);
            }

        } else if (contentType.startsWith("image")) {
            //如果是图片,直接下载
            String extensionName=contentType.split("/")[1];
            String imageFileName=imageId.incrementAndGet()+"."+extensionName;
            File imageFile=new File(downloadDir,imageFileName);
            try {
                FileUtils.writeFile(imageFile, page.getContent());
                System.out.println("保存图片 "+page.getUrl()+" 到 "+imageFile.getAbsolutePath());
            } catch (IOException ex) {
                throw new RuntimeException(ex);
            }
        }

    }

    public static void main(String[] args) throws Exception {
        DemoImageCrawler demoImageCrawler = new DemoImageCrawler("crawl", "download");
        //添加种子URL
        demoImageCrawler.addSeed("http://***.com/");
        //限定爬取范围
        demoImageCrawler.addRegex("http://***.com/.*");
        //设置为断点爬取,否则每次开启爬虫都会重新爬取
        demoImageCrawler.setResumable(true);
        demoImageCrawler.setThreads(30);
        Config.MAX_RECEIVE_SIZE = 1000 * 1000 * 10;
        demoImageCrawler.start(3);
    }

    public void computeImageId(){
        int maxId=-1;
        for(File imageFile:downloadDir.listFiles()){
            String fileName=imageFile.getName();
            String idStr=fileName.split("\\.")[0];
            int id=Integer.valueOf(idStr);
            if(id>maxId){
                maxId=id;
            }
        }
        imageId=new AtomicInteger(maxId);
    }

}

此为代码demo,下图为jar包,已测试,可以爬取图片资源

所需要的jar包为

© 著作权归作者所有

共有 人打赏支持
嗡嗡作响
粉丝 1
博文 29
码字总数 21637
作品 0
成都
程序员
python学习 三 04 图片爬虫工程-组织框架

Python安装 python学习 一 python语法,及变量类型 python学习 二 爬一个图片网站上 python学习 二 02 爬一个图片网站,获得主链接网址,并保存 python学习 二 03 爬一个图片网站-获得所有分...

gudianxiaoshuo
01/14
0
0
大二学生看到班级群老斗图!他爬了十万张表情包!获得称号斗图帝

爬图片比爬文字数据要好玩得多了,但是由于图片比文字所占内存更大,所以所耗的时间会多一些,因此可以尝试使用多线程爬虫来爬取网站的图片。 再来看看页面页码的元素: 要获取的是总页面数1...

919b0c54458f
07/17
0
0
python爬美女图片

python爬美女图片 放按钮.PM2017-12-241 阅读 python图片 背景 为了MKMM项目,爬妹子图片,标注样本 从校花网跟4439两个网站爬了一些。 具体说明 代码如下: 校花网 4439 点赞 python图片 作...

放按钮.PM
2017/12/24
0
0
python使用BeautifulSoup爬取pixabay上的图片

最近也学了一些python的基础知识,写个小爬虫,爬取上的图片并保存到本地。好,我们开始吧。 先说一下我们使用的工具和python包 python 3.6 bs4 BeautifulSoup xlwt (用于保存到本地Excel) ...

大众的众
2017/06/12
0
0
Python 爬虫 下篇

Python安装 python学习 一 python语法,及变量类型 python学习 二 爬一个图片网站上 python学习 二 02 爬一个图片网站,获得主链接网址,并保存 python学习 二 03 爬一个图片网站-获得所有分...

gudianxiaoshuo
01/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Docker学习笔记

Docker Resources All In One Docker 学习资源整理

OSC_fly
11分钟前
3
0
Android 安全逆向:篡改你的位置信息

篡改你的位置信息

蔡小鹏
11分钟前
1
0
SpringMVC 全局异常处理,返回json

1.在spring-mvc.xml中增加配置: 比如我的freemarker视图定义的是:/WEB-INF/template 我的页面则放在template下的common目录下,所以下方定义的是common/500,文件扩展名根据视图定义可以忽...

Gmupload
12分钟前
2
0
一篇文章搞定前端面试

本文旨在用最通俗的语言讲述最枯燥的基本知识 面试过前端的老铁都知道,对于前端,面试官喜欢一开始先问些HTML5新增元素啊特性啊,或者是js闭包啊原型啊,或者是css垂直水平居中怎么实现啊之...

Jack088
18分钟前
3
0
ajax 轮询请求后台服务器

<script type="text/javascript"> // var i=0; //声明轮询次数变量 $(document).ready(function(){ c = window.setInterval("getResult()",10000); //间隔多少秒去触发ajax }); function get......

15834278076
21分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部