個人分享 | 我的常規爬蟲流程

不正經程式設計師發表於2018-10-31

個人分享 | 我的常規爬蟲流程

閱讀文字大概需要 3.6 分鐘。

其實,我鼓搗的有些也算不上是爬蟲。

首先,爬蟲不是我的本職工作,我爬蟲一般是為了一些有意思的東西,獲取一些資訊,或者是實現一些可以自動化完成的任務,比如簽到。

一般我的爬蟲流程是這樣的:

1、瀏覽器訪問待爬網頁,並提前開啟開發者工具(F12),選中 Nework 選項卡,這樣就可以看到網路互動資訊;

或者,右鍵檢視網頁原始碼,查詢目標資訊。

2、在網路互動資訊流中篩選出自己需要的,然後在 postman 中模擬請求,看是否仍然可以獲取到想要的資訊;

postman 除了可以進行請求測試外,還有一個優勢就是,程式碼可以直接生成,這樣就可以方便得進行最終的整合了。

3、資料解析,從請求的響應中解析出我們的目標資料,至於得到資料後如何處理,那就是你的事情了。

下面就以大家耳熟能詳(landajie)的豆瓣電影 TOP250 為例。

例項分析

請求梳理

首先,我們要訪問待爬取的網頁:。

一般情況下,我都是直接按下 F12 調出 DevTools,點選 Network 選項卡:

有時請求已經載入完成了,可以把資料全部 clear 掉,然後重新重新整理網頁,這時候請求流會重新載入。

這裡有幾個點需要注意,主要是下圖圈紅的幾個:

1、有些網頁請求會有自動跳轉,這是請求流會重新載入,這是勾選了 Preserve log 的話,資料就會持續列印,不會被沖掉;

2、勾選 Disable cache 可以禁用快取;

3、請求流的篩選:XHR 是 XMLHttpRequest 的意思,大多數情況下只要點選 XHR 就行了,但是若此時發現沒有想要的請求資料,那麼就要點選 All 展示所有請求流。

比如豆瓣的這個,XHR 中是沒有我們的目標請求的。

請求模擬

透過上面的步驟,我們能夠確定透過哪些請求能夠得到我們的目標資料,然後把這些請求放到 postman 中進行模擬。

比如,我們在 postman 中訪問豆瓣的網站:

這裡的請求比較簡單,直接 get url 就能獲取到目標資料。

其實大部分情況下,都是需要新增一些訪問引數的,這是我們可以在 Headers 裡新增。

另外,postman 還支援其他請求,如 post、delete 等等:

  • 生成程式碼

點選右側的 code 按鈕,就可以獲取到對應的程式碼:

支援生成多種語言的程式碼:

比如,我們這裡選擇 Python Requests,就可以得到如下程式碼:

import requests

url = ""

headers = {
    'cache-control'"no-cache",
    'postman-token'"d2e1def2-7a3c-7bcc-50d0-eb6baf18560c"
    }

response = requests.request("GET", url, headers=headers)

print(response.text)

這樣我們只要把這些程式碼合併到我們的業務邏輯裡就行了,當然其中的 postman 相關的引數是不需要的。

資料解析

下面要做的就是從響應中解析目標資料。

有些響應是返回 HTML,有些是返回 json 資料,有的還是返回 XML,當然也有其他的,這就需要不同的解析邏輯。

具體如何解析,這裡我們不再贅述,之前的爬蟲文章中都有涉及,有興趣的可以翻一翻。

總結

本來打算寫 postman 的使用的,但是寫來寫去,成了我的一般爬蟲流程梳理。

本文涉及的爬蟲都是比較初級的,至於 ip 代理、驗證碼解析等高階功能,後面有時間再單獨說。

不知道你的一般流程是什麼樣的,不妨留言分享下

原文連結:https://mp.weixin.qq.com/s/FgoEdLlAxYVgWD56X06hRA

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559358/viewspace-2218224/,如需轉載,請註明出處,否則將追究法律責任。

相關文章