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