《大連理工大學爬蟲.ppt》由會員分享,可在線閱讀,更多相關(guān)《大連理工大學爬蟲.ppt(27頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、網(wǎng)絡(luò)爬蟲 劉文飛 2014-10-29 2 2020/11/16 網(wǎng)絡(luò)爬蟲又稱網(wǎng)絡(luò)蜘蛛,網(wǎng)絡(luò)機器人。 網(wǎng)絡(luò)爬蟲是一個自勱提取網(wǎng)頁的程序,它為搜索引擎從萬維網(wǎng)上下載網(wǎng) 頁,是搜索引擎的重要組成。爬蟲一般從一個或若干初始網(wǎng)頁的 URL開始 ,獲得初始網(wǎng)頁上的 URL,在抓取網(wǎng)頁的過程中,丌斷從當前頁面上抽取 新的 URL放入隊列,直到滿足系統(tǒng)的一定停止條件。 網(wǎng)絡(luò)爬蟲的定義 3 2020/11/16 非定向爬蟲 爬取互聯(lián)網(wǎng)上任何基于 Http協(xié)議的內(nèi)容 工具: Larbin、 Ncrawler, Heritrix、 Nutch 定向爬蟲 根據(jù)網(wǎng)站自身的屬性采用特定
2、的爬取策略 工具包: HttpClient( Java和 C#均已攜帶封裝好的類庫) 爬蟲分類 4 2020/11/16 HTTP: Hyper Text Transfer Protocol(超文本傳輸協(xié)議) 萬維網(wǎng)協(xié)會和 Internet工作小組, 1999年 6月發(fā)布了 RFC 2616,定義了 今天普遍使用的 HTTP/1.1 HTTP協(xié)議是用于從 WWW服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議, 屬于應(yīng)用層協(xié)議,由請求和響應(yīng)構(gòu)成,是一個標準的客戶端服務(wù)器模型 HTTP協(xié)議 5 2020/11/16 HTTP協(xié)議通常承載于 TCP協(xié)議之上,有時也承載于 TLS或
3、SSL協(xié)議層之上 (這就是所說的 HTTPS) 默認 HTTP端口為 80, HTTPS端口為 443 HTTP在 TCP/IP協(xié)議棧中的位置 6 2020/11/16 HTTP協(xié)議永遠都是客戶端發(fā)起請求,服務(wù)器回送響應(yīng)(無法推送) HTTP協(xié)議是一個無狀態(tài)的協(xié)議,同一個客戶端的這次請求和上次請求沒 有對應(yīng)關(guān)系( Cookie & Session) HTTP的請求響應(yīng)模型 7 2020/11/16 ( 1)首先客戶端不服務(wù)器需要建立連接(只要單擊某個超鏈接, HTTP 的工作就開始了) ( 2)建立連接后,客戶機向服務(wù)器發(fā)送請求 ( 3)服務(wù)器接收到
4、請求后,給予相應(yīng)的相應(yīng)信息 ( 4)客戶端接受服務(wù)器所返回的信息通過瀏覽器顯示在用戶顯示屏上, 然后客戶端不服務(wù)器斷開連接 HTTP協(xié)議工作流程 8 2020/11/16 HTPP請求由三個部分組成: 請求行、消息報頭、請求正文 HTTP協(xié)議之請求 9 2020/11/16 請求行: Method Request-URI HTTP-Version CRLF 例: GET /index.jsp HTTP/1.1 (CRLF) GET 請求獲取 Request-URI所標識的資源 POST 在 Request-
5、URI所標識的資源后附加新的數(shù)據(jù) HEAD 請求獲取由 Request-URI所標識的資源的響應(yīng)消息報頭 PUT 請求服務(wù)器存儲一個資源,并用 Request-URI作為其標識 DELETE 請求服務(wù)器刪除 Request-URI所標識的資源 TRACE 請求服務(wù)器回送收到的請求信息,主要用于測試或診斷 CONNECT 保留將來使用 OPTIONS 請求查詢服務(wù)器的性能,或者查詢不資源相關(guān)的選項和需求 HTTP協(xié)議之請求 請求行 10 2020/11/16 Accept:瀏覽器可接受的 MIME類型。 Accept-Charset
6、:瀏覽器可接受的字符集。 Accept-Encoding:瀏覽器能夠進行解碼的數(shù)據(jù)編碼方式,比如 gzip Accept-Language:瀏覽器所希望的語言種類 Authorization:授權(quán)信息 Connection:表示是否需要持久連接 Content-Length:表示請求消息正文的長度。 Cookie:這是最重要的請求頭信息之一 Host:初始 URL中的主機和端口 Referer:跳轉(zhuǎn)前 URL User-Agent:瀏覽器類型及系統(tǒng)信息 HTTP協(xié)議之請求 消息報頭 11 2020/11/16 HTPP響應(yīng)由三個部分組成: 狀態(tài)行、消息
7、報頭、響應(yīng)正文 HTTP協(xié)議之響應(yīng) 12 2020/11/16 狀態(tài)行: HTTP-Version Status-Code Reason-Phrase CRLF 例: HTTP/1.1 200 OK ( CRLF) 狀態(tài)代碼有三位數(shù)字組成,第一個數(shù)字定義了響應(yīng)的類別,且有五種可能取值: 1xx:指示信息 --表示請求已接收,繼續(xù)處理 2xx:成功 --表示請求已被成功接收、理解、接受 3xx:重定向 --要完成請求必須進行更進一步的操作 4xx:客戶端錯誤 --請求有語法錯誤或請求無法實現(xiàn) 5xx:服務(wù)器端錯誤 --服務(wù)器未能實現(xiàn)合法的請求 HTTP協(xié)議之響應(yīng)
8、狀態(tài)行 13 2020/11/16 常見狀態(tài)代碼、狀態(tài)描述、說明: 200 OK //客戶端請求成功 400 Bad Request //客戶端請求有語法錯誤,丌能被服務(wù)器所理解 401 Unauthorized //請求未經(jīng)授權(quán),這個狀態(tài)代碼必須和 WWW- Authenticate報頭域一起使用 403 Forbidden //服務(wù)器收到請求,但是拒絕提供服務(wù) 404 Not Found //請求資源丌存在, eg:輸入了錯誤的 URL 500 Internal Server Error //服務(wù)器發(fā)生丌可預(yù)期的錯誤 503 Server Unavailable /
9、/服務(wù)器當前丌能處理客戶端的請求,一段時間后 可能恢復正常 HTTP協(xié)議之響應(yīng) 狀態(tài)行 14 2020/11/16 Location:用于重定向接受者到一個新的位置 Server:服務(wù)器用來處理請求的軟件信息 HTTP協(xié)議之響應(yīng) 消息報頭 15 2020/11/16 Session機制是一種服務(wù)器端保存用戶狀態(tài)的機制,服務(wù)器使用一種類似 于散列表的結(jié)構(gòu)來保存信息。 (比如未登錄狀態(tài)下購物車的實現(xiàn) ) 客戶端維護 Session ID的方式 Cookie URL重寫 表單隱藏字段 HTTP相關(guān)知識點 - Session 16 2020/11/16 Coo
10、kies是客戶端保存狀態(tài)的一種方案 會話性質(zhì)的 cookie,存放在瀏覽器內(nèi)存 持久化的 cookie,存放在硬盤上 Cookies可以記錄你的用戶 ID、密碼、瀏覽過的網(wǎng)頁、停留的時間等信息 。當你再次來到該網(wǎng)站時,網(wǎng)站通過讀取 Cookies,得知你的相關(guān)信息, 就可以做出相應(yīng)的勱作(如在頁面顯示歡迎你的標語,或者讓你丌用輸 入 ID、密碼就直接登錄等等) HTTP相關(guān)知識點 - Cookies 17 2020/11/16 HTTP壓縮是在 Web服務(wù)器和瀏覽器間傳輸壓縮文本內(nèi)容的方法。 HTTP壓縮傳輸能更加有效節(jié)約帶寬流量。 HTTP壓縮采用通用的壓縮算法如
11、gzip等壓縮 HTML、 JavaScript或 CSS 文件。 網(wǎng)頁壓縮情況查詢: HTTP相關(guān)知識點 壓縮 18 2020/11/16 JSON 即 JavaScript Object Natation,它是一種輕量級的數(shù)據(jù)交換格式 ,非常適合于服務(wù)器不 JavaScript 的交互 JSON 是基于純文本的數(shù)據(jù)格式。由于 JSON 天生是為 JavaScript 準備 的,因此, JSON 的數(shù)據(jù)格式非常簡單,可以用 JSON 傳輸一個簡單的 String, Number, Boolean,也可以傳輸一個數(shù)組,或者一個復雜的 Object 對象。 HTTP相關(guān)知
12、識點 - JSON 19 2020/11/16 爬蟲抓取策略 網(wǎng)頁地址過濾 網(wǎng)頁更新去重 網(wǎng)頁解析 多線程并發(fā)爬取 爬蟲流程 20 2020/11/16 深度優(yōu)先搜索策略 廣度優(yōu)先搜索策略 最佳優(yōu)先搜索策略 可能根據(jù)主題相似度、反向鏈接數(shù)、 PR值等策略 爬蟲抓取策略 21 2020/11/16 正則表達式 可以過濾非正規(guī)的網(wǎng)址、無需下載的文件(后綴名)或特定域名下的網(wǎng)頁 建立 IP規(guī)則庫 如若建立校內(nèi)搜索引擎,則在爬取時將所有非校內(nèi) IP過濾掉 網(wǎng)頁地址過濾 22 2020/11/16 歷史參考策略 據(jù)頁面以往的歷史更
13、新數(shù)據(jù),預(yù)測該頁面未來何時會發(fā)生變化。 用戶體驗策略 根據(jù)用戶點擊信息優(yōu)先爬取質(zhì)量較高 /關(guān)注度高的頁面 聚類抽樣策略 無需保存歷史信息,解決冷啟勱問題(無歷史信息的網(wǎng)頁) 網(wǎng)頁更新策略 23 2020/11/16 MD5值比較法 缺點:精確匹配才算重復 網(wǎng)頁指紋法 網(wǎng)頁去重策略 24 2020/11/16 主要內(nèi)容抽取 TIKA,可抽取 HTML, PDF, MS-*, Image(元數(shù)據(jù) ), XML等 Lucene提供工具包抽取 HTML(較粗糙,容易出錯) cx-extractor,基于行塊分布凼數(shù)的通用網(wǎng)頁正文抽取算法(哈工大) 特定內(nèi)容抽取 Java: HTMLParser C#: Winista.HtmlParser 網(wǎng)頁解析 25 2020/11/16 多線程中主要問題 網(wǎng)絡(luò)帶寬 服務(wù)器對爬蟲請求頻率的限制 異常處理(多次爬取、日志記錄) 多線程并發(fā)爬取 26 2020/11/16 robots.txt(統(tǒng)一小寫)是一種存放于網(wǎng)站根目錄下的 ASCII編碼的文本 文件,它通常告訴網(wǎng)絡(luò)蜘蛛,此網(wǎng)站中的哪些內(nèi)容是丌應(yīng)被搜索引擎的 漫游器獲取的,哪些是可以被獲取的。 爬蟲相關(guān)知識點 robots.txt 27 2020/11/16