咱们都知道如今知识星球里面的内容有不少的沉淀,可是咱们并不能每次打开从头开始阅读到最后,虽然星主也会每隔一段时间对知识星球内容进行汇总,但仍是有必定的遗留内容。java
为了让本身对知识有个很好的把握,方便本身后期查询整理,今天先使用Java简单的使用爬虫,进行读取数据。git
咱们使用的语言是Java8,开发工具是Idea,仓库管理使用ggithub,代码会存放到github上。github
爬虫代码连接:github.com/menhuan/not…web
若是须要直接使用的,须要本身把里面cookie改为本身的,而且处理下浏览头部信息。json
进行爬虫首先须要找到星球是按照什么登录,是按照token仍是按照cookie,仍是按照session的方式来进行数据交互的。后端
关于以上三者的内容区别,能够参考我上一篇文章的连接。api
此次爬虫并无设置模拟登录的操做,只是根据访问具体连接来操做。浏览器
登录星球后,找到连接,查看请求头里面的内容。微信
这样咱们就能找到后台访问连接地址,若是在查找的时候,并不知道怎么查看,就本身使用F12查看下。cookie
内容显示如图上所示。
不一样的连接内容,可能并无找到cookie信息,这时候须要咱们耐心下,对于先后端产品都是须要鉴权验证的。
从图上显示可知,知识星球是将token内容放到在cookie当中,那么咱们在模拟访问的时候须要在http header上设置 cookie。
从上面图中咱们能够找到在访问须要设置的header,还有须要访问的连接url: api.zsxq.com/v1.10/group…
固然,在图上内容显示,还有更多的接口让咱们去访问数据,先将总体的流程数据获取到,咱们再进行更多的数据访问整合。
须要设置的header内容包含以下:
这三个内容设置在http 访问中便可
程序是创建在Spring boot 1.5.10版本上。构建程序使用的gradle 4.9+.
/** http 访问知识星球设计的请求 * @return java.lang.String * @Author fruiqi * @Description 爬虫设置header, 访问的url * @Date 22:53 2019/3/27 * @Param [headMap, url] **/
public String restStar(Map<String, String> headMap, String url) {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headMap.forEach((k, v) -> {
headers.set(k, v);
});
HttpEntity entity = new HttpEntity(headers);
ResponseEntity<String> exchange = restTemplate.exchange(url,
HttpMethod.GET, entity, String.class);
String result = exchange.getBody();
return result;
}
复制代码
请求统一设置好以后,写访问service
Map<String,String> headMap = new HashMap<>(10);
headMap.put("User-Agent",USER_AGENT_ARRAP);
headMap.put("Referer","https://wx.zsxq.com/dweb/");
headMap.put("cookie","zsxq_access_token=CD063C9D-9A81-B150-C996-35B20D2E1ABD");
RequestUtil requestUtil = new RequestUtil();
String res = requestUtil.restStar(headMap, url);
JSONObject jsonObject = JSON.parseObject(res);
logger.info("[info] JSON content :{}",res);
复制代码
经过上面连接咱们就能够得到到知识星球数据。
固然这个具体仍是在搭架子,后期须要完善的内容以下:
以上暂时是星球爬取内容的规划,预计在3个月内完成,欢迎你们一块儿围观。
源代码地址以下:
·END·
路虽远,行则必至
本文原发于 同名微信公众号「胖琪的升级之路」,回复「1024」你懂得,给个赞呗。
微信ID:YoungRUIQ