溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

個(gè)人分享 | 我的常規(guī)爬蟲(chóng)流程

發(fā)布時(shí)間:2020-08-09 07:49:03 來(lái)源:ITPUB博客 閱讀:140 作者:不正經(jīng)程序員 欄目:編程語(yǔ)言

個(gè)人分享 | 我的常規(guī)爬蟲(chóng)流程

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

其實(shí),我鼓搗的有些也算不上是爬蟲(chóng)。

首先,爬蟲(chóng)不是我的本職工作,我爬蟲(chóng)一般是為了一些有意思的東西,獲取一些信息,或者是實(shí)現(xiàn)一些可以自動(dòng)化完成的任務(wù),比如簽到。

一般我的爬蟲(chóng)流程是這樣的:

1、瀏覽器訪(fǎng)問(wèn)待爬網(wǎng)頁(yè),并提前打開(kāi)開(kāi)發(fā)者工具(F12),選中 Nework 選項(xiàng)卡,這樣就可以看到網(wǎng)絡(luò)交互信息;

或者,右鍵查看網(wǎng)頁(yè)源代碼,查找目標(biāo)信息。

2、在網(wǎng)絡(luò)交互信息流中篩選出自己需要的,然后在 postman 中模擬請(qǐng)求,看是否仍然可以獲取到想要的信息;

postman 除了可以進(jìn)行請(qǐng)求測(cè)試外,還有一個(gè)優(yōu)勢(shì)就是,代碼可以直接生成,這樣就可以方便得進(jìn)行最終的整合了。

3、數(shù)據(jù)解析,從請(qǐng)求的響應(yīng)中解析出我們的目標(biāo)數(shù)據(jù),至于得到數(shù)據(jù)后如何處理,那就是你的事情了。

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

實(shí)例分析

請(qǐng)求梳理

首先,我們要訪(fǎng)問(wèn)待爬取的網(wǎng)頁(yè):https://movie.douban.com/top250。

一般情況下,我都是直接按下 F12 調(diào)出 DevTools,點(diǎn)擊 Network 選項(xiàng)卡:

有時(shí)請(qǐng)求已經(jīng)加載完成了,可以把數(shù)據(jù)全部 clear 掉,然后重新刷新網(wǎng)頁(yè),這時(shí)候請(qǐng)求流會(huì)重新加載。

這里有幾個(gè)點(diǎn)需要注意,主要是下圖圈紅的幾個(gè):

1、有些網(wǎng)頁(yè)請(qǐng)求會(huì)有自動(dòng)跳轉(zhuǎn),這是請(qǐng)求流會(huì)重新加載,這是勾選了 Preserve log 的話(huà),數(shù)據(jù)就會(huì)持續(xù)打印,不會(huì)被沖掉;

2、勾選 Disable cache 可以禁用緩存;

3、請(qǐng)求流的篩選:XHR 是 XMLHttpRequest 的意思,大多數(shù)情況下只要點(diǎn)擊 XHR 就行了,但是若此時(shí)發(fā)現(xiàn)沒(méi)有想要的請(qǐng)求數(shù)據(jù),那么就要點(diǎn)擊 All 展示所有請(qǐng)求流。

比如豆瓣的這個(gè),XHR 中是沒(méi)有我們的目標(biāo)請(qǐng)求的。

請(qǐng)求模擬

通過(guò)上面的步驟,我們能夠確定通過(guò)哪些請(qǐng)求能夠得到我們的目標(biāo)數(shù)據(jù),然后把這些請(qǐng)求放到 postman 中進(jìn)行模擬。

比如,我們?cè)?postman 中訪(fǎng)問(wèn)豆瓣的網(wǎng)站:

這里的請(qǐng)求比較簡(jiǎn)單,直接 get url 就能獲取到目標(biāo)數(shù)據(jù)。

其實(shí)大部分情況下,都是需要添加一些訪(fǎng)問(wèn)參數(shù)的,這是我們可以在 Headers 里添加。

另外,postman 還支持其他請(qǐng)求,如 post、delete 等等:

  • 生成代碼

點(diǎn)擊右側(cè)的 code 按鈕,就可以獲取到對(duì)應(yīng)的代碼:

支持生成多種語(yǔ)言的代碼:

比如,我們這里選擇 Python Requests,就可以得到如下代碼:

import requests

url = "https://movie.douban.com/top250"

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

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

print(response.text)

這樣我們只要把這些代碼合并到我們的業(yè)務(wù)邏輯里就行了,當(dāng)然其中的 postman 相關(guān)的參數(shù)是不需要的。

數(shù)據(jù)解析

下面要做的就是從響應(yīng)中解析目標(biāo)數(shù)據(jù)。

有些響應(yīng)是返回 HTML,有些是返回 json 數(shù)據(jù),有的還是返回 XML,當(dāng)然也有其他的,這就需要不同的解析邏輯。

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

總結(jié)

本來(lái)打算寫(xiě) postman 的使用的,但是寫(xiě)來(lái)寫(xiě)去,成了我的一般爬蟲(chóng)流程梳理。

本文涉及的爬蟲(chóng)都是比較初級(jí)的,至于 ip 代理、驗(yàn)證碼解析等高端功能,后面有時(shí)間再單獨(dú)說(shuō)。

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

原文鏈接:https://mp.weixin.qq.com/s/FgoEdLlAxYVgWD56X06hRA

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI