天天看點

Hadoop筆記之十七——爬蟲架構scrapy實際案例(爬取安卓版QQ閱讀)

  話不多說,我們的目的: 使用scrapy爬取安卓版QQ閱讀所有的小說(隻是小說的基本資訊,小說内容是不要想的、千萬不要想……)

環境準備

安卓收集模拟器:夜神模拟器  

安卓手機抓包工具:fiddler

代碼運作環境:   python3.6

存儲資料庫: postgreSQL。

大體思路

    本來想詳細的寫一寫過程步驟,但是懶癌來了怎麼都攔不住。下面可以給大家一個,每一步驟的具體操作網上都有,不難也不難了解,我會上傳一份可用的自己寫好的QQ閱讀的scrapy代碼,直通車——。

  (1)準備好postgreSQL資料庫,設定可遠端連接配接。

  (2)夜神模拟器安裝QQ閱讀。

  (3)通過fiddler監聽夜神模拟器發出的所有請求。

      需要注意的是:fiddler預設不監聽https的請求,我們需要在它的設定裡面取設定,并且要在被監聽的模拟器裡面安裝信任安全證書。

  (4)分析QQ閱讀的請求,找到我們需要的資料接口并分析其Json規則。

      QQ閱讀APP的規則并不難找,隻能上面的監聽成功了。我們就可以在QQ閱讀的全部分類裡面,先爬取到所有的分類,然後對每一個分類分别爬取其下所有的小說,具體規則如下:

1、大類别(男女、出版、漫畫、聽書)下的小類别:https://androidtgw.reader.qq.com/v7_0_5/queryOperation?categoryFlag=1

(categoryFlag 1—5代表五種大類别,傳回資料種actionId為小類别Id)

2、小類别下小說清單(舉例 男生—玄幻):http://rec.reader.qq.com/v7_0_5/listDispatch?actionTag=,-1,-1,-1,-1,101&actionId=20001&action=categoryV3&pagestamp=1 (pagestamp為分頁辨別)

3、某一小說(舉例 男生-玄幻,男生-奇幻,女生-言情):

奇幻:

https://androidtgw.reader.qq.com/v7_0_5/nativepage/book/detail?pagestamp=1&alg=67.1.11&dataType=cate_id&data_type=0&fromPage=&origin=20005&bid=25297287

言情:https://androidtgw.reader.qq.com/v7_0_5/nativepage/book/detail?bid=25054827&pagestamp=1&alg=67.1.11&dataType=cate_id&data_type=0&fromPage=&origin=30013

(bid為書籍辨別,actionId為小類别id,pagestamp為分頁辨別)

  (5)搭建scrapy架構,根據上面得到的規則編寫代碼,進行資料的爬取。

       這裡需要注意的地方是 我們爬取一些(有反爬蟲的)網站的時候要麼使用個代理ip池、要麼設定個爬取延時,不然這些網站可能會封掉我們的ip,不過QQ閱讀還是沒有的,至少沒有封掉我……

繼續閱讀