抓取網頁、分析請求
解析網頁、尋找資料
儲存資料、多頁處理 -

可以看到,有些網址翻頁後URL是不變的,那該怎麼爬取,請看下文。
谷歌浏覽器——檢查——Network
首先清空請求清單,點選下一頁(第2頁)
箭頭所指的地方就是真實請求
以下是第2、3、4頁的請求,通過對比可以發現網站是通過pageIndex參數控制翻頁的,并且pageSize參數删去之後并不會對請求産生影響
有關參數的資訊可以在Hearders的Query String Parameters裡查找到
翻頁後URL不發生變化的網站的資料一般都是通過Ajax或者JavaScript加載的,可以在過濾器的XHR或者JS中找到真實請求
分析:使用谷歌浏覽器開發者工具分析網頁的請求
測試:測試URL請求中每個參數的作用,找出控制翻頁等功能的參數
重複:多次重複尋找符合爬蟲需要的真實請求
通過爬取知乎“輪子哥”——vczh關注的人分析Ajax或者JavaScript加載的資料的真實請求并展示這種爬取方法的具體過程。
首先,進入“輪子哥——vczh”關注的人的頁面(注意:需要先登入個人知乎賬号)
通過禁止JavaScript加載的方法發現頁面不能正常加載,确認該頁面的翻頁是通過JavaScript加載資料實作的
使用谷歌浏覽器開發者工具尋找包含關注人資訊的真實請求,可以發現真實請求是以“followees”開頭的請求,其傳回一個JSON格式的資料,該資料對應下一頁的“他關注的人”:
接下來便可以嘗試爬取該請求的資料
首先使用requests.get()嘗試爬取資料
可以發現傳回了“500 Server Error”,即由于網站反爬蟲的原因,伺服器傳回了“500服務錯誤”
該問題可以通過添加hearders請求頭資訊解決
請求頭資訊承載了關于用戶端浏覽器、請求頁面、伺服器等相關的資訊,用來告知伺服器發起請求的用戶端的具體資訊
知乎的反爬蟲機制是通過核對請求頭資訊實作的,是以需要在使用requests請求資料的時候加上所需的請求頭
對比知乎的請求頭資訊和常見的請求頭資訊,發現知乎請求頭多了authorization和X-UDID的資訊
在爬蟲程式中添加請求頭資訊,即添加headers
注:剛才寫的時候出問題了,說是User-Agent問題,查了半天,發現是在最前面多了個空格。。
運作程式,成功傳回資料
pandas DataFrame的from_dict()方法可以很友善地把爬取到的資料儲存為DataFrame格式的結構化資料
定義一個get_user_data()函數,實作翻頁爬取功能,并添加上爬取時間間隔以免由于爬取太頻繁給伺服器造成負擔
ok,成功解決