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