包含标签 JavaSpring 的文章

爬虫下载资源总结与技巧(一)

前言 自己主要是IOS,但是也想业余时间学学后台的一点,之前用过mfc,c#,写点嵌入式辅佐小工具,现在入坑脱做IOS.所以,想向全栈走,就业余时间看看springboot相关,前三篇是不同类型的爬虫代表,今天说说下载对应资源的不同处理。本篇只说一些第三方API使用,其他的下载具体……

阅读全文

爬虫下载资源总结与技巧(二)

前言 这篇是上篇的后续,主要是编写一个简单的http下载工具,使用的wget库,这周就简单写一写,下几周会重点说说,真实下载处理及查表优化。 注意 对于网络下载,cdn下载等等,要主要请求头的一些配置,并处理好超时问题。 B站需要配置,“Referer”, “http://www.bilibili.com/" N站,……

阅读全文

Tumblr 爬虫

<version>0.5.2</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> ## process package win.raychow.modules.spider.base.processor; import com.alibaba.fastjson.JSON; import org.json.XML; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import us.codecraft.webmagic.Page; import us.codecraft.webmagic.Site; import us.codecraft.webmagic.Spider; import us.codecraft.webmagic.processor.PageProcessor; import win.raychow.core.base.dao.CacheKey; import win.raychow.core.base.service.HtmlTool; import win.raychow.demo.spider.tool.SslDownloader; import win.raychow.modules.spider.base.dao.SpiderTumblr; import win.raychow.modules.spider.base.domain.TumblrRecModel; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** Created by ray on 2017/11/19. */ @Service public class TumblrProcessor implements PageProcessor { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired TumblrPipeLine pipeLine; @Value("${spider.tumblr.prefixSexList}") private String prefixSexList; @Value("${spider.tumblr.prefixAnimalList}") private String prefixAnimalList; public final static String bashUrl = ".tumblr.com/api/read?type=video&num=20&start="; private String getCategory(String url){ //性 String[] sexList = prefixSexList.split(CacheKey.Split); for (String id: sexList) { if (url.contains(id)){ return SpiderTumblr.Category_AV; } } //动物 String[] animalList = prefixAnimalList.split(CacheKey.Split); for (String id: animalList) { if (url.contains(id)){ return SpiderTumblr.Category_Animal; } } return SpiderTumblr.Category_Null; } @Override public Site getSite() { //HttpHost httpHost = new……

阅读全文

bilibili 爬虫

前言 上次写到niconico爬虫,今天上一个bilibili爬虫,使用的依然是webmagic. webmagic简介地址(请点击) 注意 常规网页展示部分一般分为列表页和详情页,bilibili站是请求后台api返回json,然后使用js生成网页,所有主要设计解析方法为,json解析……

阅读全文

niconico 爬虫

<version>0.5.2</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> ## process /** Created by ray on 2017/7/16. 爬虫管道 */ @Service public class NicoNicoProcessor implements PageProcessor { private Logger logger = LoggerFactory.getLogger(this.getClass()); //https://api.bilibili.com/archive_rank/getarchiverankbypartion?type=jsonp&tid=20&pn=1 private String bashUrl = “http://www.nicovideo.jp/tag/%E8%B8%8A%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F?page=" ;// + i //http://www.nicovideo.jp/watch/sm23385186 private String detailUrl = “http://www.nicovideo.jp/watch/"; @Value("${spider.niconico.maxSize}”) int maxSize; @Autowired NicoNicoPipeLine pipeLine; @Override public Site getSite() { //HttpHost httpHost = new HttpHost("127.0.0.1",1087); Site site = Site.me() //.setHttpProxy(httpHost) .setUserAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36") .setSleepTime(10 * 1000) .setTimeOut(20 * 1000) .setRetryTimes(3) .setCycleRetryTimes(3); return site; } @Override public void process(Page page){ String pageUrl = page.getUrl().toString(); //新增请求列表 List<String> requestUrls =new ArrayList<>(); List<SpiderNico> resList = new ArrayList<>(); logger.info(pageUrl); try { if (pageUrl.contains(bashUrl)){ //解析列表 List <String> htmlList = page.getHtml().xpath("//div/ul[@class='list']/li[@class='item']").all(); for (String tmp: htmlList) { if (tmp.length()……

阅读全文