柚子快報(bào)激活碼778899分享:網(wǎng)絡(luò)爬蟲【簡介】
柚子快報(bào)激活碼778899分享:網(wǎng)絡(luò)爬蟲【簡介】
我叫補(bǔ)三補(bǔ)四,很高興見到大家,歡迎一起學(xué)習(xí)交流和進(jìn)步
今天來講一講爬蟲
一、網(wǎng)絡(luò)爬蟲的定義
網(wǎng)絡(luò)爬蟲(Web Crawler),又稱為網(wǎng)絡(luò)蜘蛛、網(wǎng)絡(luò)機(jī)器人等,是一種按照一定規(guī)則自動(dòng)抓取互聯(lián)網(wǎng)信息的程序或腳本。它通過模擬瀏覽器的行為,發(fā)送HTTP請(qǐng)求獲取網(wǎng)頁內(nèi)容,并從中提取有用信息。網(wǎng)絡(luò)爬蟲廣泛應(yīng)用于搜索引擎、大數(shù)據(jù)分析、學(xué)術(shù)研究等領(lǐng)域,是互聯(lián)網(wǎng)信息采集的重要工具。
二、網(wǎng)絡(luò)爬蟲的類型
網(wǎng)絡(luò)爬蟲主要分為通用網(wǎng)絡(luò)爬蟲和定向網(wǎng)絡(luò)爬蟲兩大類。
(一)通用網(wǎng)絡(luò)爬蟲
通用網(wǎng)絡(luò)爬蟲,又稱全網(wǎng)爬蟲,旨在從互聯(lián)網(wǎng)上盡可能多地抓取網(wǎng)頁信息,覆蓋各種類型和主題的網(wǎng)站。其特點(diǎn)包括:
1. 覆蓋范圍廣:不局限于特定領(lǐng)域,目標(biāo)是構(gòu)建全面的網(wǎng)頁索引。
2. 遵循規(guī)則:通常遵循robots.txt協(xié)議,尊重網(wǎng)站的抓取規(guī)則。
3. 并行工作:由于數(shù)據(jù)量巨大,通常采用并行爬取的方式。
通用網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)原理主要包括以下幾個(gè)模塊:
? 初始URL集合:作為爬取的起點(diǎn)。
? URL隊(duì)列:存儲(chǔ)待爬取的網(wǎng)頁鏈接。
? 頁面爬行模塊:通過HTTP請(qǐng)求獲取網(wǎng)頁內(nèi)容。
? 頁面分析模塊:解析網(wǎng)頁,提取其中的鏈接和內(nèi)容。
? 頁面數(shù)據(jù)庫:存儲(chǔ)爬取到的網(wǎng)頁。
? 鏈接過濾模塊:避免重復(fù)抓取相同的網(wǎng)頁。
通用網(wǎng)絡(luò)爬蟲通常采用深度優(yōu)先或廣度優(yōu)先的搜索策略。
(二)定向網(wǎng)絡(luò)爬蟲
定向網(wǎng)絡(luò)爬蟲,又稱聚焦網(wǎng)絡(luò)爬蟲或主題網(wǎng)絡(luò)爬蟲,是有選擇地抓取與特定主題相關(guān)的網(wǎng)頁。其特點(diǎn)包括:
1. 目標(biāo)明確:專注于特定領(lǐng)域或主題,如科技新聞、醫(yī)學(xué)研究等。
2. 節(jié)省資源:由于目標(biāo)明確,不需要遍歷整個(gè)互聯(lián)網(wǎng),因此在存儲(chǔ)和計(jì)算資源的消耗上相對(duì)較少。
定向網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)原理與通用網(wǎng)絡(luò)爬蟲類似,但增加了內(nèi)容評(píng)價(jià)和鏈接評(píng)價(jià)模塊。其核心在于通過特定的策略和算法選擇要抓取的網(wǎng)頁,通常會(huì)使用機(jī)器學(xué)習(xí)或自然語言處理技術(shù)來判斷網(wǎng)頁內(nèi)容是否符合預(yù)定主題。
三、常見的搜索策略
網(wǎng)絡(luò)爬蟲在抓取網(wǎng)頁時(shí),通常會(huì)采用以下幾種搜索策略:
(一)深度優(yōu)先搜索(DFS)
深度優(yōu)先搜索的基本方法是按照深度由低到高的順序,依次訪問下一級(jí)網(wǎng)頁鏈接,直到不能再深入為止。爬蟲在完成一個(gè)爬行分支后返回到上一鏈接節(jié)點(diǎn),繼續(xù)搜索其他鏈接。這種策略適合垂直搜索或站內(nèi)搜索,但可能會(huì)導(dǎo)致資源浪費(fèi)。
(二)廣度優(yōu)先搜索(BFS)
廣度優(yōu)先搜索按照網(wǎng)頁內(nèi)容目錄層次深淺來爬行頁面,優(yōu)先抓取較淺層次的頁面。當(dāng)同一層次中的頁面爬行完畢后,再深入下一層繼續(xù)爬行。這種策略能夠有效控制爬行深度,避免陷入無窮深層分支。
(三)最佳優(yōu)先搜索(Best-First Search)
最佳優(yōu)先搜索是一種基于啟發(fā)式的搜索策略,它通過評(píng)估每個(gè)節(jié)點(diǎn)的重要性來決定下一步的抓取順序。例如,可以基于頁面與主題的相關(guān)性、鏈接質(zhì)量等因素進(jìn)行評(píng)估。這種方法能夠更高效地抓取有價(jià)值的信息,尤其適用于定向網(wǎng)絡(luò)爬蟲。
開發(fā)者工具
在從事編程開發(fā)的人員,其實(shí)瀏覽器也是其必備的開發(fā)工具
在找到目標(biāo)網(wǎng)頁以后我們可以使用快捷鍵F12,也可以通過在網(wǎng)頁右鍵選擇檢查或者用組合鍵ctrl+shift+I來打開開發(fā)者工具
開發(fā)者工具的界面共有9個(gè)標(biāo)簽頁,分別是:Elements、Console、Sources、Network、Performance、Memory、Application、Security和Audits。
如果是用于爬蟲分析的話,熟練掌握Elements和Network標(biāo)簽就能滿足大部分的爬蟲需求。
Elements標(biāo)簽
在Elements標(biāo)簽中允許從瀏覽器的角度看頁面,也就是說可以看到Chrome渲染頁面所需要的HTML、CSS和DOM(Document Object Model)對(duì)象,也可以編輯內(nèi)容更改頁面的顯示效果。
Elements標(biāo)簽分成兩個(gè)部分,其中區(qū)域1用于顯示頁面的HTML信息,當(dāng)選中某一行的內(nèi)容時(shí),區(qū)域2會(huì)顯示當(dāng)前選中的css樣式,并且允許對(duì)元素的css樣式進(jìn)行查看和編輯,computed顯示當(dāng)前選中的邊距屬性,邊框?qū)傩?,Event Listeners是整個(gè)網(wǎng)頁事件觸發(fā)的JavaScript
通過單擊Event Listeners下的某個(gè)JavaScript會(huì)自動(dòng)跳轉(zhuǎn)到Sources標(biāo)簽,顯示當(dāng)前JavaScript的源碼,這個(gè)功能可快速找到JavaScript代碼所在的位置,對(duì)分析JavaScript起到快速定位作用。
Network標(biāo)簽
從network當(dāng)中可以看到頁面向服務(wù)器請(qǐng)求的信息,請(qǐng)求的大小,以及請(qǐng)求花費(fèi)的時(shí)間
network標(biāo)簽主要包含五個(gè)區(qū)域:
1.功能區(qū)
? 記錄開關(guān):紅色圓點(diǎn)表示是否開啟網(wǎng)絡(luò)日志記錄,灰色為未開啟,紅色為已開啟。
? 清除日志:清除當(dāng) 前所有網(wǎng)絡(luò)請(qǐng)求記錄。
? 屏幕捕獲:開啟后會(huì)記錄頁面在不同時(shí)間下的快照。
? 過濾器開關(guān):開啟后可顯示篩選區(qū)。
? 快速查找:用于快速查找特定請(qǐng)求。
? 顯示設(shè)置:包括是否使用更大的區(qū)域顯示請(qǐng)求記錄、是否顯示Overview等。
? 分組顯示:勾選后可按表單名稱對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行分組。
? 保留日志:勾選后,頁面刷新不會(huì)清空之前的請(qǐng)求記錄。
? 禁用緩存:當(dāng)打開開發(fā)者工具時(shí)生效,頁面資源不會(huì)存入緩存。
? 離線模式:用于測(cè)試離線狀態(tài)下的頁面表現(xiàn)。
? 網(wǎng)絡(luò)限速:模擬不同網(wǎng)絡(luò)條件,如弱網(wǎng)。
2.篩選區(qū)
? 提供多種預(yù)定義的篩選選項(xiàng),如ALL(顯示所有請(qǐng)求)、XHR(AJAX異步請(qǐng)求)、JS(JavaScript文件)、CSS(樣式表文件)、Img(圖片)、Media(媒體文件)、Font(字體文件)、Doc(HTML文檔)、WS(WebSocket請(qǐng)求)等。
? 還可以輸入自定義條件進(jìn)行篩選。
3.時(shí)間軸區(qū)(Overview)
? 以時(shí)間軸的形式展示頁面加載過程,包括DOMContentLoaded和load事件的觸發(fā)時(shí)間。
? 可以通過滑動(dòng)鼠標(biāo)滾輪查看不同時(shí)間點(diǎn)的加載情況。
4.主顯示區(qū)
? 顯示所有網(wǎng)絡(luò)請(qǐng)求的詳細(xì)列表,包括以下列:
? Name:請(qǐng)求資源的名稱。
? Status:HTTP狀態(tài)碼。
? Type:請(qǐng)求資源的MIME類型。
? Initiator:發(fā)起請(qǐng)求的對(duì)象或進(jìn)程。
? Size:服務(wù)器返回的響應(yīng)大小。
? Time:請(qǐng)求的總持續(xù)時(shí)間。
? Waterfall:各請(qǐng)求相關(guān)活動(dòng)的直觀分析圖。
? 點(diǎn)擊某個(gè)請(qǐng)求的名稱,可以查看該請(qǐng)求的詳細(xì)信息,包括Headers(請(qǐng)求頭和響應(yīng)頭)、Preview(預(yù)覽)、Response(響應(yīng)內(nèi)容)、Cookies(Cookie信息)、Timing(請(qǐng)求生命周期各階段時(shí)間)等。
5.信息匯總區(qū)
? 顯示當(dāng)前頁面加載的總請(qǐng)求數(shù)、數(shù)據(jù)傳輸量、加載時(shí)間等信息。
? 包括DOMContentLoaded和load事件的觸發(fā)時(shí)間及其在時(shí)間軸上的標(biāo)記。
Requests Table
5個(gè)區(qū)域中,Requests Table是核心部分,主要作用是記錄每個(gè)請(qǐng)求信息。但每次網(wǎng)站出現(xiàn)刷新時(shí),請(qǐng)求列表都會(huì)清空并記錄最新的請(qǐng)求信息,如用戶登錄后發(fā)生304跳轉(zhuǎn),就會(huì)清空跳轉(zhuǎn)之前的請(qǐng)求信息并捕捉跳轉(zhuǎn)后的請(qǐng)求信息。對(duì)于每條請(qǐng)求信息,可以單擊查看該請(qǐng)求的詳細(xì)信息:
每條請(qǐng)求信息劃分為以下5個(gè)標(biāo)簽。 ● Headers:該請(qǐng)求的HTTP頭信息。 ● Preview:根據(jù)所選擇的請(qǐng)求類型(JSON、圖片、文本)顯示相應(yīng)的預(yù)覽。 ● Response:顯示HTTP的Response信息。 ● Cookies:顯示HTTP的Request和Response過程中的Cookies信息。 ● Timing:顯示請(qǐng)求在整個(gè)生命周期中各部分花費(fèi)的時(shí)間。
關(guān)于Headers的內(nèi)容如下: Headers 標(biāo)簽通常分為以下幾個(gè)部分:
1.請(qǐng)求方法和URL
? Request Method:顯示請(qǐng)求的HTTP方法(如GET、POST、PUT、DELETE等)。
? Request URL:顯示請(qǐng)求的完整URL。
? Request HTTP Version:顯示使用的HTTP版本(如HTTP/1.1、HTTP/2等)。
2.請(qǐng)求頭(Request Headers) 請(qǐng)求頭是由客戶端發(fā)送給服務(wù)器的頭信息,它包含了關(guān)于請(qǐng)求的元數(shù)據(jù)。常見的請(qǐng)求頭包括:
? Accept:客戶端可接受的響應(yīng)內(nèi)容類型(如`text/html`、`application/json`等)。
? Accept-Encoding:客戶端可接受的內(nèi)容編碼方式(如`gzip`、`deflate`等)。
? Accept-Language:客戶端偏好的語言(如`zh-CN`)。
? Authorization:用于身份驗(yàn)證的憑據(jù)(如Basic Auth、Bearer Token等)。
? Content-Length:請(qǐng)求體的長度(僅在POST或PUT請(qǐng)求中出現(xiàn))。
? Content-Type:請(qǐng)求體的內(nèi)容類型(如`application/json`、`application/x-www-form-urlencoded`等)。
? Cookie:客戶端存儲(chǔ)的Cookie信息。
? Host:請(qǐng)求的主機(jī)名。
? Origin:發(fā)起請(qǐng)求的源(用于CORS跨域請(qǐng)求)。
? Referer:請(qǐng)求的來源頁面。
? User-Agent:客戶端的瀏覽器或設(shè)備信息。
3.響應(yīng)頭(Response Headers) 響應(yīng)頭是由服務(wù)器返回給客戶端的頭信息,它包含了關(guān)于響應(yīng)的元數(shù)據(jù)。常見的響應(yīng)頭包括:
? Access-Control-Allow-Origin:允許訪問資源的源(用于CORS跨域請(qǐng)求)。
? Cache-Control:緩存策略(如`no-cache`、`max-age`等)。
? Content-Encoding:響應(yīng)體的內(nèi)容編碼方式(如`gzip`)。
? Content-Length:響應(yīng)體的長度。
? Content-Type:響應(yīng)體的內(nèi)容類型(如`text/html`、`application/json`等)。
? Date:服務(wù)器生成響應(yīng)的時(shí)間。
? ETag:資源的唯一標(biāo)識(shí)符,用于緩存驗(yàn)證。
? Expires:響應(yīng)過期時(shí)間。
? Last-Modified:資源最后修改時(shí)間。
? Location:重定向目標(biāo)URL。
? Set-Cookie:服務(wù)器設(shè)置的Cookie信息。
? Server:服務(wù)器軟件信息。
4.請(qǐng)求體(Request Payload) 對(duì)于POST或PUT請(qǐng)求,Headers 標(biāo)簽還會(huì)顯示請(qǐng)求體的內(nèi)容。這通常用于查看發(fā)送到服務(wù)器的數(shù)據(jù),例如表單數(shù)據(jù)、JSON對(duì)象等。
5.查詢參數(shù)(Query String Parameters) 如果請(qǐng)求URL中包含查詢參數(shù)(如`?key=value`),Headers 標(biāo)簽會(huì)將這些參數(shù)列出,方便開發(fā)者查看。
---
Headers 標(biāo)簽的作用
1. 調(diào)試請(qǐng)求和響應(yīng):通過查看Headers,可以確認(rèn)請(qǐng)求是否正確發(fā)送,以及服務(wù)器是否返回了預(yù)期的響應(yīng)。
2. 優(yōu)化性能:通過分析緩存頭(如`Cache-Control`、`ETag`等),可以優(yōu)化頁面的緩存策略,減少重復(fù)請(qǐng)求。
3. 排查跨域問題:通過查看`Access-Control-Allow-Origin`等頭信息,可以排查CORS跨域問題。
4. 驗(yàn)證身份認(rèn)證:通過檢查`Authorization`頭,可以確認(rèn)身份認(rèn)證信息是否正確傳遞。
5. 分析內(nèi)容編碼:通過查看`Content-Encoding`和`Content-Type`,可以確認(rèn)資源是否被正確壓縮和解析。
---
示例 假設(shè)你發(fā)起一個(gè)GET請(qǐng)求,Headers標(biāo)簽可能顯示如下內(nèi)容:
請(qǐng)求方法和URL
GET /api/data HTTP/1.1
請(qǐng)求頭
Host: example.com
Connection: keep-alive
Accept: application/json
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: sessionid=1234567890
響應(yīng)頭
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 256
Cache-Control: max-age=3600
Date: Sat, 15 Oct 2023 12:34:56 GMT
Set-Cookie: sessionid=9876543210; Path=/; HttpOnly
請(qǐng)求體(如果適用) 如果是一個(gè)POST請(qǐng)求,可能會(huì)顯示:
Request Payload:
{
? "username": "user",
? "password": "pass"
}
網(wǎng)站分析步驟:
分析網(wǎng)站的步驟如下: 步驟01 找出數(shù)據(jù)來源,大部分?jǐn)?shù)據(jù)來源于Doc、XHR和JS標(biāo)簽。 步驟02 找到數(shù)據(jù)所在的請(qǐng)求,分析其請(qǐng)求鏈接、請(qǐng)求方式和請(qǐng)求參數(shù)。 步驟03 查找并確定請(qǐng)求參數(shù)來源。有時(shí)候某些請(qǐng)求參數(shù)是通過另外的請(qǐng)求生成的,比如請(qǐng)求A的參數(shù)id是通過請(qǐng)求B所生成的,那么要獲取請(qǐng)求A的數(shù)據(jù),就要先獲取請(qǐng)求B的數(shù)據(jù)作為A的請(qǐng)求參數(shù)。
?
柚子快報(bào)激活碼778899分享:網(wǎng)絡(luò)爬蟲【簡介】
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。