B站,N站,汤站,爬虫下载资源总结与技巧(二)

前言

  • 这篇是上篇的后续,主要是编写一个简单的http下载工具,使用的wget库,这周就简单写一写,下几周会重点说说,真实下载处理及查表优化。

注意

  • 对于网络下载,cdn下载等等,要主要请求头的一些配置,并处理好超时问题。
  • B站需要配置,"Referer", "http://www.bilibili.com/"
  • N站,需要注意的是旧资源重复问题。
  • Tumblr站,暂时无遇到特别注意的地方。

代码

pom配置

		<dependency>
			<groupId>com.github.axet</groupId>
			<artifactId>wget</artifactId>
			<version>1.4.9</version>
		</dependency>

通用下载工具

    //下载文件
    public static String downToLocal(String url,String fileBasePath, String fileName, String extName, JSONObject headers) throws Exception {

        Logger logger = LoggerFactory.getLogger(DownloadFileTool.class);

        String name = (fileName + "." + extName).toLowerCase();
        String filePath = fileBasePath + name;

        String downUrl = url;
        File file = new File(filePath);


        try {
            URL downUrll = new URL(downUrl);
            DownloadInfo info = new DownloadInfo(downUrll);
            info.setUserAgent("Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36");
            if (headers != null) {
                info.setReferer(new URL(headers.get("Referer").toString()));
            }
            WGet get = new WGet(info, file);
            get.download();
            String newUrl = name;
            //logger.info("downToLocal baseUrl:" + url  +  " newUrl:" + newUrl +  " fileName:" + name + " filePath:" + filePath);
            return newUrl;
        }
        catch (Exception e){
            file.delete();
            throw e;
        }
    }

原文:http://raychow.linkfun.top/2017/12/22/archives/9_javaSpring/spriderDownloadTool/index/

猜你喜欢

转载自my.oschina.net/u/3729367/blog/1596359
今日推荐