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