網絡爬蟲【簡介】

我叫補三補四,很高興見到大家,歡迎一起學習交流和進步

今天來講一講視圖

一、網絡爬蟲的定義


網絡爬蟲(Web Crawler),又稱為網絡蜘蛛、網絡機器人等,是一種按照一定規則自動抓取互聯網信息的程序或腳本。它通過模擬瀏覽器的行為,發送HTTP請求獲取網頁內容,并從中提取有用信息。網絡爬蟲廣泛應用于搜索引擎、大數據分析、學術研究等領域,是互聯網信息采集的重要工具。


二、網絡爬蟲的類型


網絡爬蟲主要分為通用網絡爬蟲和定向網絡爬蟲兩大類。


(一)通用網絡爬蟲


通用網絡爬蟲,又稱全網爬蟲,旨在從互聯網上盡可能多地抓取網頁信息,覆蓋各種類型和主題的網站。其特點包括:

1. 覆蓋范圍廣:不局限于特定領域,目標是構建全面的網頁索引。

2. 遵循規則:通常遵循robots.txt協議,尊重網站的抓取規則。

3. 并行工作:由于數據量巨大,通常采用并行爬取的方式。

通用網絡爬蟲的實現原理主要包括以下幾個模塊:

? 初始URL集合:作為爬取的起點。

? URL隊列:存儲待爬取的網頁鏈接。

? 頁面爬行模塊:通過HTTP請求獲取網頁內容。

? 頁面分析模塊:解析網頁,提取其中的鏈接和內容。

? 頁面數據庫:存儲爬取到的網頁。

? 鏈接過濾模塊:避免重復抓取相同的網頁。

通用網絡爬蟲通常采用深度優先或廣度優先的搜索策略。


(二)定向網絡爬蟲


定向網絡爬蟲,又稱聚焦網絡爬蟲或主題網絡爬蟲,是有選擇地抓取與特定主題相關的網頁。其特點包括:

1. 目標明確:專注于特定領域或主題,如科技新聞、醫學研究等。

2. 節省資源:由于目標明確,不需要遍歷整個互聯網,因此在存儲和計算資源的消耗上相對較少。

定向網絡爬蟲的實現原理與通用網絡爬蟲類似,但增加了內容評價和鏈接評價模塊。其核心在于通過特定的策略和算法選擇要抓取的網頁,通常會使用機器學習或自然語言處理技術來判斷網頁內容是否符合預定主題。


三、常見的搜索策略


網絡爬蟲在抓取網頁時,通常會采用以下幾種搜索策略:


(一)深度優先搜索(DFS)


深度優先搜索的基本方法是按照深度由低到高的順序,依次訪問下一級網頁鏈接,直到不能再深入為止。爬蟲在完成一個爬行分支后返回到上一鏈接節點,繼續搜索其他鏈接。這種策略適合垂直搜索或站內搜索,但可能會導致資源浪費。


(二)廣度優先搜索(BFS)


廣度優先搜索按照網頁內容目錄層次深淺來爬行頁面,優先抓取較淺層次的頁面。當同一層次中的頁面爬行完畢后,再深入下一層繼續爬行。這種策略能夠有效控制爬行深度,避免陷入無窮深層分支。


(三)最佳優先搜索(Best-First Search)


最佳優先搜索是一種基于啟發式的搜索策略,它通過評估每個節點的重要性來決定下一步的抓取順序。例如,可以基于頁面與主題的相關性、鏈接質量等因素進行評估。這種方法能夠更高效地抓取有價值的信息,尤其適用于定向網絡爬蟲。


開發者工具

在從事編程開發的人員,其實瀏覽器也是其必備的開發工具

在找到目標網頁以后我們可以使用快捷鍵F12,也可以通過在網頁右鍵選擇檢查或者用組合鍵ctrl+shift+I來打開開發者工具

開發者工具的界面共有9個標簽頁,分別是:Elements、Console、Sources、Network、Performance、Memory、Application、Security和Audits。

如果是用于爬蟲分析的話,熟練掌握Elements和Network標簽就能滿足大部分的爬蟲需求。

Elements標簽

在Elements標簽中允許從瀏覽器的角度看頁面,也就是說可以看到Chrome渲染頁面所需要的HTML、CSS和DOM(Document Object Model)對象,也可以編輯內容更改頁面的顯示效果。

Elements標簽分成兩個部分,其中區域1用于顯示頁面的HTML信息,當選中某一行的內容時,區域2會顯示當前選中的css樣式,并且允許對元素的css樣式進行查看和編輯,computed顯示當前選中的邊距屬性,邊框屬性,Event Listeners是整個網頁事件觸發的JavaScript

通過單擊Event Listeners下的某個JavaScript會自動跳轉到Sources標簽,顯示當前JavaScript的源碼,這個功能可快速找到JavaScript代碼所在的位置,對分析JavaScript起到快速定位作用。

Network標簽

從network當中可以看到頁面向服務器請求的信息,請求的大小,以及請求花費的時間

network標簽主要包含五個區域:

1.功能區

? 記錄開關:紅色圓點表示是否開啟網絡日志記錄,灰色為未開啟,紅色為已開啟。

? 清除日志:清除當
前所有網絡請求記錄。

? 屏幕捕獲:開啟后會記錄頁面在不同時間下的快照。

? 過濾器開關:開啟后可顯示篩選區。

? 快速查找:用于快速查找特定請求。

? 顯示設置:包括是否使用更大的區域顯示請求記錄、是否顯示Overview等。

? 分組顯示:勾選后可按表單名稱對網絡請求進行分組。

? 保留日志:勾選后,頁面刷新不會清空之前的請求記錄。

? 禁用緩存:當打開開發者工具時生效,頁面資源不會存入緩存。

? 離線模式:用于測試離線狀態下的頁面表現。

? 網絡限速:模擬不同網絡條件,如弱網。


2.篩選區

? 提供多種預定義的篩選選項,如ALL(顯示所有請求)、XHR(AJAX異步請求)、JS(JavaScript文件)、CSS(樣式表文件)、Img(圖片)、Media(媒體文件)、Font(字體文件)、Doc(HTML文檔)、WS(WebSocket請求)等。

? 還可以輸入自定義條件進行篩選。


3.時間軸區(Overview)

? 以時間軸的形式展示頁面加載過程,包括DOMContentLoaded和load事件的觸發時間。

? 可以通過滑動鼠標滾輪查看不同時間點的加載情況。


4.主顯示區

? 顯示所有網絡請求的詳細列表,包括以下列:

? Name:請求資源的名稱。

? Status:HTTP狀態碼。

? Type:請求資源的MIME類型。

? Initiator:發起請求的對象或進程。

? Size:服務器返回的響應大小。

? Time:請求的總持續時間。

? Waterfall:各請求相關活動的直觀分析圖。

? 點擊某個請求的名稱,可以查看該請求的詳細信息,包括Headers(請求頭和響應頭)、Preview(預覽)、Response(響應內容)、Cookies(Cookie信息)、Timing(請求生命周期各階段時間)等。


5.信息匯總區

? 顯示當前頁面加載的總請求數、數據傳輸量、加載時間等信息。

? 包括DOMContentLoaded和load事件的觸發時間及其在時間軸上的標記。

Requests Table

5個區域中,Requests Table是核心部分,主要作用是記錄每個請求信息。但每次網站出現刷新時,請求列表都會清空并記錄最新的請求信息,如用戶登錄后發生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)
請求頭是由客戶端發送給服務器的頭信息,它包含了關于請求的元數據。常見的請求頭包括:

? Accept:客戶端可接受的響應內容類型(如`text/html`、`application/json`等)。

? Accept-Encoding:客戶端可接受的內容編碼方式(如`gzip`、`deflate`等)。

? Accept-Language:客戶端偏好的語言(如`zh-CN`)。

? Authorization:用于身份驗證的憑據(如Basic Auth、Bearer Token等)。

? Content-Length:請求體的長度(僅在POST或PUT請求中出現)。

? Content-Type:請求體的內容類型(如`application/json`、`application/x-www-form-urlencoded`等)。

? Cookie:客戶端存儲的Cookie信息。

? Host:請求的主機名。

? Origin:發起請求的源(用于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 標簽還會顯示請求體的內容。這通常用于查看發送到服務器的數據,例如表單數據、JSON對象等。


5.查詢參數(Query String Parameters)
如果請求URL中包含查詢參數(如`?key=value`),Headers 標簽會將這些參數列出,方便開發者查看。


---

Headers 標簽的作用

1. 調試請求和響應:通過查看Headers,可以確認請求是否正確發送,以及服務器是否返回了預期的響應。

2. 優化性能:通過分析緩存頭(如`Cache-Control`、`ETag`等),可以優化頁面的緩存策略,減少重復請求。

3. 排查跨域問題:通過查看`Access-Control-Allow-Origin`等頭信息,可以排查CORS跨域問題。

4. 驗證身份認證:通過檢查`Authorization`頭,可以確認身份認證信息是否正確傳遞。

5. 分析內容編碼:通過查看`Content-Encoding`和`Content-Type`,可以確認資源是否被正確壓縮和解析。


---

示例
假設你發起一個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的請求參數。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72382.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72382.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72382.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

?AI時代到來,對電商來說是效率躍升,還是溫水煮青蛙

?凌晨三點的義烏商貿城,95后創業者小王,靜靜地盯著屏幕上的AI工具,竟露出了笑容。這個月他的跨境玩具店銷量提升了不少,從之前的狀態翻了3倍;而且團隊人數有所變化,從5人縮減到了2人(其中包括他…

PDF文件密碼保護破解:安全解密的步驟與技巧

PDF文件加密后,需要特定的密碼才能訪問內容。以下是一些常見的方法來解密PDF文件: 方法一:使用Adobe Acrobat 如果你有Adobe Acrobat Pro,可以使用它來解密PDF文件。 打開Adobe Acrobat Pro: 啟動Adobe Acrobat Pro…

qt 自帶虛擬鍵盤的編譯使用記錄

一、windows 下編譯 使用vs 命令窗口,分別執行: qmake CONFIG"lang-en_GB lang-zh_CN" nmake nmake install 如果事先沒有 指定需要使用的輸入法語言就進行過編譯,則需要先 執行 nmake distclean 清理后執行 qmake 才能生效。 …

Java開發之數據庫應用:記一次醫療系統數據庫遷移引發的異常:從MySQL到PostgreSQL的“dual“表陷阱與突圍之路

記一次醫療系統數據庫遷移引發的異常:從MySQL到PostgreSQL的"dual"表陷阱與突圍之路 一、驚魂時刻:數據庫切換引發的系統雪崩 某醫療影像系統在進行國產化改造過程中,將原MySQL數據庫遷移至PostgreSQL。遷移完成后,系…

C++刷題(二):棧 + 隊列

📝前言說明: 本專欄主要記錄本人的基礎算法學習以及刷題記錄,使用語言為C。 每道題我會給出LeetCode上的題號(如果有題號),題目,以及最后通過的代碼。沒有題號的題目大多來自牛客網。對于題目的…

精通游戲測試筆記(持續更新)

第一章、游戲測試的兩條規則 不要恐慌 不要將這次發布當作最后一次發布 不要相信任何人 把每次發布當作最后一次發布 第二章:成為一名游戲測試工程師

Windows功能之FTP服務器搭建

一、創作背景 之前有用linux系統搭建過ftp服務器,最近想著用windows系統也順便搭建一個,看網上有第三方服務軟件一鍵部署,記得windows可以不借助第三方軟件就可以搭建,就想順便操作試試,結果老是連接不上,費…

星型組網模塊的兩種交互方式優缺點解析

星型組網模塊簡介 星型組網模塊工作在433MHz頻段;星型組網模塊集主機(協調器)、終端為一體,星型組網模塊具有長距離、高速率兩種傳輸模式,一個主機(協調器)支持多達200個節點與其通訊&#xff0…

二分+前綴和——森林的最大美麗值

森林的最大美麗值(二分差分數組) 題目分析 求最小值的最大值,聯想到二分。 第一階段二段性分析 對于所有樹的高度都可以大于等于mid,那么我們可以確定高度小于mid的值一定也可以,但是此時我需要找的是最大的高度,那么mid一定比…

Pytorch實現之最小二乘梯度歸一化設計

簡介 簡介:LSGAN提出了一種利用最小二乘法來計算兩個數據分布之間的距離,該論文在此基礎上采用梯度歸一化來進一步穩定訓練。 論文題目:LSN-GAN: A Novel Least Square Gradient Normalization for Generative Adversarial Networks(LSN-GAN:一種新的生成對抗網絡的最小…

JavaScript基礎-全局作用域

在JavaScript編程中,理解變量的作用域是編寫高效、可維護代碼的關鍵之一。全局作用域是指變量在整個程序范圍內都可訪問的狀態,這意味著它們可以在任何函數或代碼塊中被讀取和修改。然而,過度使用全局變量也可能導致一些問題,如命…

【2025.3.13】記一次雙系統筆記本加裝固態硬盤記錄 linux擴容 linux更換/home和/opt所在硬盤 windows無法調整亮度

文章目錄 🌕事情經過🌕更換/home和/opt的掛載硬盤🌙目的🌙初始化1t固態硬盤🌙打開Linux查看硬盤信息🌙給新1t固態硬盤分區🌙格式化分區🌙把新1t固態硬盤先掛載到/mnt/ssd_1t 用于后續…

山東省新一代信息技術創新應用大賽-計算機網絡管理賽項(樣題)

目錄 競賽試題 網絡拓撲 配置需求 虛擬局域網 IPv4地址部署 OSPF及路由部署 配置合適的靜態路由組網 MSTP及VRRP鏈路聚合部署 IPSEC部署 路由選路部署 設備與網絡管理部署 1.R1 2.R2 3.S1 4.S2 5.S3 競賽試題 本競賽使用HCL(華三云實驗室)來進行網絡設備選擇…

【測試語言基礎篇】Python基礎之List列表

一、Python 列表(List) 序列是Python中最基本的數據結構。序列中的每個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。 Python有6個序列的內置類型,但最常見的是列表和元組。序列都可…

大數據面試之路 (二) hive小文件合并優化方法

大量小文件容易在文件存儲端造成瓶頸,影響處理效率。對此,您可以通過合并Map和Reduce的結果文件來處理。 一、合并小文件的常見場景 寫入時產生小文件:Reduce任務過多或數據量過小,導致每個任務輸出一個小文件。 動態分區插入&…

MySQL 批量插入 vs 逐條插

MySQL 插入數據:批量插入 vs 逐條插入,哪個更快? 在 MySQL 中,插入數據有兩種常見方式: 批量插入:一條 SQL 插入多條數據。逐條插入:每次插入一條數據。 這兩種方式有什么區別?哪…

Docker基礎命令說明

Docker基礎操作命令眾多,這些命令可以按如下方式進行分類: 鏡像操作容器操作網絡操作數據卷操作LOG查詢 等方面進行分類。 一、鏡像操作命令 docker images:用于列出本地系統中所有的 Docker 鏡像。鏡像就像是一個模板,它包含…

AI重構私域增長:從流量收割到終身價值運營的三階躍遷

私域運營的AI進化論:內容即服務的三個階段 隨著企業微信生態的成熟,私域運營正經歷從"流量收割"到"關系養成"的本質轉變。在AIGC技術的推動下,2024年私域場景正式進入**"內容即服務"**的價值共創期&#xff1…

Linux date 命令使用指南

date 命令用于 顯示或設置系統日期和時間&#xff0c;支持靈活的時間格式化和計算。以下是常用場景與詳細示例&#xff1a; 一、基本用法 1. 顯示當前日期和時間 <BASH> date # 輸出&#xff1a;Thu Jun 13 14:25:36 CST 20242. 設置系統時間&#xff08;需root權限&am…

Maven的依賴管理

maven相關依賴的官網&#xff1a;https://mvnrepository.com/ pom.xml是項目依賴的配置文件 maven首先會去本地倉庫下載相關依賴&#xff0c;如果沒有&#xff0c;則會去私服下載&#xff0c;再沒有&#xff0c;就去中央倉庫或鏡像下載。 自定義properties&#xff0c;可使用…