爬知識星球,製做本身的知識倉庫

爬蟲知識星球

咱們都知道如今知識星球裏面的內容有不少的沉澱,可是咱們並不能每次打開從頭開始閱讀到最後,雖然星主也會每隔一段時間對知識星球內容進行彙總,但仍是有必定的遺留內容。java

爲了讓本身對知識有個很好的把握,方便本身後期查詢整理,今天先使用Java簡單的使用爬蟲,進行讀取數據。git

環境準備

咱們使用的語言是Java8,開發工具是Idea,倉庫管理使用ggithub,代碼會存放到github上。github

爬蟲代碼連接:github.com/menhuan/not…web

若是須要直接使用的,須要本身把裏面cookie改爲本身的,而且處理下瀏覽頭部信息。json

星球準備

進行爬蟲首先須要找到星球是按照什麼登錄,是按照token仍是按照cookie,仍是按照session的方式來進行數據交互的。後端

關於以上三者的內容區別,能夠參考我上一篇文章的連接。api

找出來http設置的header

此次爬蟲並無設置模擬登錄的操做,只是根據訪問具體連接來操做。瀏覽器

登錄星球后,找到連接,查看請求頭裏面的內容。微信

2019-03-27-23-53-13

這樣咱們就能找到後臺訪問連接地址,若是在查找的時候,並不知道怎麼查看,就本身使用F12查看下。cookie

內容顯示如圖上所示。

不一樣的連接內容,可能並無找到cookie信息,這時候須要咱們耐心下,對於先後端產品都是須要鑑權驗證的。

2019-03-27-23-56-02

從圖上顯示可知,知識星球是將token內容放到在cookie當中,那麼咱們在模擬訪問的時候須要在http header上設置 cookie。

從上面圖中咱們能夠找到在訪問須要設置的header,還有須要訪問的連接url: api.zsxq.com/v1.10/group…

固然,在圖上內容顯示,還有更多的接口讓咱們去訪問數據,先將總體的流程數據獲取到,咱們再進行更多的數據訪問整合。

須要設置的header內容包含以下:

  • cookie: zsxq_access_token=CD063C9D-9A81-B150-C996-sdasa 須要替換成本身的
  • Referer:wx.zsxq.com/dweb 須要跳轉的網站
  • User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36 設置瀏覽器

這三個內容設置在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);
複製代碼

經過上面連接咱們就能夠得到到知識星球數據。

固然這個具體仍是在搭架子,後期須要完善的內容以下:

  1. 獲取全部星球分組信息。
  2. 根據不一樣的組獲取星球星主的問答,進行摘取。
  3. 設置按期策略,採集數據,並整理成冊
  4. 數據整理與分析。

以上暫時是星球爬取內容的規劃,預計在3個月內完成,歡迎你們一塊兒圍觀。

源代碼地址以下:

github.com/menhuan/not…

摘要數據內容

總結

·END·

路雖遠,行則必至

本文原發於 同名微信公衆號「胖琪的升級之路」,回覆「1024」你懂得,給個讚唄。

微信ID:YoungRUIQ

公衆號
相關文章
相關標籤/搜索