日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

爬虫原理

發布時間:2024/8/26 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 爬虫原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:http://syc001.iteye.com/blog/1028001

爬蟲原理:
每個網頁頁面返回到客戶端的都是 html,你需要的內容就在這html里面,這個html你可以用一個字符串去保存到java變量里,你要做的工作就是截取字符串相應位置的內容并保存起來
,你給的這個網站每個商品的網頁有個特殊的地方

爬蟲分為兩類:
聚集爬蟲:
聚焦爬蟲是一個自動下載網頁的程序,它根據既定的抓取目標,有選擇的訪問萬維網上的網頁與相關的鏈接,獲取所需要的信息。聚焦爬蟲并不追求大的覆蓋,而將目標定為抓取與某一特定主題內容相關的網頁,為面向主題的用戶查詢準備數據資源。

通用爬蟲:
 網絡爬蟲的組成
  在網絡爬蟲的系統框架中,主過程由控制器,解析器,資源庫三部分組成??刂破鞯闹饕ぷ魇秦撠?br />給多線程中的各個爬蟲線程分配工作任務。解析器的主要工作是下載網頁,進行頁面的處理,主要是將一些JS腳本標簽、CSS代碼內容、空格字符、HTML標
簽等內容處理掉,爬蟲的基本工作是由解析器完成。資源庫是用來存放下載到的網頁資源,一般都采用大型的數據庫存儲,如Oracle數據庫
,并對其建立索引。

控制器:
  控制器是網絡爬蟲的中央控制器,它主要是負責根據系統傳過來的URL鏈接,分配一線程,然后啟動線程調用爬蟲爬取網頁的過程。
  
解析器:
  解析器是負責網絡爬蟲的主要部分,其負責的工作主要有:下載網頁的功能,對網頁的文本進行處理,如過濾功能,抽取特殊HTML標簽的功能,分析數據功能。
  
資源庫:
  主要是用來存儲網頁中下載下來的數據記錄的容器,并提供生成索引的目標源。中大型的數據庫產品有:Oracle、Sql Server等。

概覽web爬蟲
web爬蟲主要功能是從web中發現,下載以及存儲內容。廣泛應用于各種搜索引擎中。
一個典型的web爬蟲主要由以下的部分組成:

能被爬蟲識別的URL庫。
文檔下載模塊,主要用于從web中下載內容。
文檔解析模塊,用于解析下載文檔中的內容,如解析HTML,PDF,Word等等。這個模塊還要提取網頁中的URL和一些對于索引有用的數據。
存儲文檔的元數據以及內容的庫。
規范化URL模塊,把URL轉成標準的格式。
URL過濾器,爬蟲可以過濾掉不需要的URL。

設計與實現上述模塊,主要取決于你的爬蟲到底要爬取什么以及要抓取的范圍。最簡單的例子是從一個已知的站點抓取一些網頁,這個爬蟲代碼用一頁紙
就可以寫完?;ヂ摼W應用中,可能會碰到這種十分簡單的需求,但是如果要實現一個爬取大量文檔的爬蟲,就不是那么簡單了。一般來說這個爬蟲就是N個應用組
成,并且難點是基于分布式的。

爬蟲的兩個階段
一個典型的爬蟲主要有如下兩個階段

URL庫初始化然后開始爬取。
爬蟲讀取沒有訪問過的URL,來確定它的工作范圍。

對于要抓取的URL,要進行如下的不重

獲取URL的內容
解析內容,獲取URL以及所需的數據。
存儲有價值的數據。
規范化新抓取的URL。
過濾掉不需要爬去的URL。
把要抓取的URL更新到URL庫中。
重復步驟2,直到抓取的網頁深度完畢為止。

從廣度進行分類的話,爬蟲有兩類。通用型和集中型。通用型是采集所有能解析的文檔。它們主要通過URL過濾技術來實現這一過程。而集中型爬蟲主要爬取特定內容的文檔,如爬取sina博客,格式為固定內容也是我們感興趣的。

幸運的是,有開源的爬蟲可以使用
在java中,nutch和heritrix都提供了爬蟲的實現。Nutch是apache lucene的子項目,地址是http://lucene.apache.org/nutch/
。這個項目非常穩定,并且文檔豐富。Nutch把多個網頁存儲在一個文件中。對于大的爬蟲來說,這么降低I/O讀寫,性能更加優秀。

Heritrix是互聯網存檔的web爬蟲。項目地址為http://crawler.archive.org/
。Heritrix專注于大型爬蟲的實現。許可證為LGPL。

另外提一下,還有一個項目值得關注,那就是apache tika。項目地址為http://tika.apache.org/
。tika使用解析器從文檔中發現以及提取元數據和文本內容。

Google:《Java開源Web爬蟲分類列表》
(1)
ItSucks是一個java web spider(web機器人,爬蟲)開源項目。支持通過下載模板和正則表達式來定義下載規則。提供一個swing GUI操作界面。下載地址:http://itsucks.sourceforge.net/

(2)
WebSPHINX
WebSPHINX是一個Java類包和Web爬蟲的交互式開發環境。Web爬蟲(也叫作機器人或蜘蛛)是可以自動瀏覽與處理Web頁面的程序。WebSPHINX由兩部分組成:爬蟲工作平臺和WebSPHINX類包。http://www.cs.cmu.edu/~rcm/websphinx/.

(3)
JSpider
JSpider:是一個完全可配置和定制的Web Spider引擎.你可以利用它來檢查網站的錯誤(內在的服務器錯誤等),網站內外部鏈接檢查,分析網站的結構(可創建一個網站地圖),下載整個Web站點,你還可以寫一個JSpider插件來擴展你所需要的功能。http://j-spider.sourceforge.net/

(4)
Arale
Arale主要為個人使用而設計,而沒有像其它爬蟲一樣是關注于頁面索引。Arale能夠下載整個web站點或來自web站點的某些資源。Arale還能夠把動態頁面映射成靜態頁面。http://web.tiscali.it/_flat/arale.jsp.html

(5)
Web-Harvest
Web-Harvest是一個Java開源Web數據抽取工具。它能夠收集指定的Web頁面并從這些頁面中提取有用的數據。Web-Harvest主要是運用了像XSLT,XQuery,正則表達式等這些技術來實現對text/xml的操作。http://web-harvest.sourceforge.net/

原文地址:http://www.cnblogs.com/wawlian/archive/2012/06/18/2553061.html(有一些小改動進行了高亮)

網絡爬蟲是捜索引擎抓取系統的重要組成部分。爬蟲的主要目的是將互聯網上的網頁下載到本地形成一個或聯網內容的鏡像備份。這篇博客主要對爬蟲以及抓取系統進行一個簡單的概述。

一、網絡爬蟲的基本結構及工作流程

一個通用的網絡爬蟲的框架如圖所示:

網絡爬蟲的基本工作流程如下:

1.首先選取一部分精心挑選的種子URL;

2.將這些URL放入待抓取URL隊列;

3.從待抓取URL隊列中取出待抓取在URL,解析DNS,并且得到主機的ip,并將URL對應的網頁下載下來,存儲進已下載網頁庫中。此外,將這些URL放進已抓取URL隊列。

4.分析已抓取URL隊列中的URL,分析其中的其他URL,并且將URL放入待抓取URL隊列,從而進入下一個循環。

二、從爬蟲的角度對互聯網進行劃分

對應的,可以將互聯網的所有頁面分為五個部分:

1.已下載未過期網頁

2.已下載已過期網頁:抓取到的網頁實際上是互聯網內容的一個鏡像與備份,互聯網是動態變化的,一部分互聯網上的內容已經發生了變化,這時,這部分抓取到的網頁就已經過期了。

3.待下載網頁:也就是待抓取URL隊列中的那些頁面

4.可知網頁:還沒有抓取下來,也沒有在待抓取URL隊列中,但是可以通過對已抓取頁面或者待抓取URL對應頁面進行分析獲取到的URL,認為是可知網頁。

5.還有一部分網頁,爬蟲是無法直接抓取下載的。稱為不可知網頁。

三、抓取策略

在爬蟲系統中,待抓取URL隊列是很重要的一部分。待抓取URL隊列中的URL以什么樣的順序排列也是一個很重要的問題,因為這涉及到先抓取那個頁面,后抓取哪個頁面。而決定這些URL排列順序的方法,叫做抓取策略。下面重點介紹幾種常見的抓取策略:

1.深度優先遍歷策略

深度優先遍歷策略是指網絡爬蟲會從起始頁開始,一個鏈接一個鏈接跟蹤下去,處理完這條線路之后再轉入下一個起始頁,繼續跟蹤鏈接。我們以下面的圖為例:

遍歷的路徑:A-F-G E-H-I B C D

2.寬度優先遍歷策略

寬度優先遍歷策略的基本思路是,將新下載網頁中發現的鏈接直接插入待抓取URL隊列的末尾。也就是指網絡爬蟲會先抓取起始網頁中鏈接的所有網頁,然后再選擇其中的一個鏈接網頁,繼續抓取在此網頁中鏈接的所有網頁。還是以上面的圖為例:

遍歷路徑:A-B-C-D-E-F G H I

3.反向鏈接數策略

反向鏈接數是指一個網頁被其他網頁鏈接指向的數量。反向鏈接數表示的是一個網頁的內容受到其他人的推薦的程度。因此,很多時候搜索引擎的抓取系統會使用這個指標來評價網頁的重要程度,從而決定不同網頁的抓取先后順序。

在真實的網絡環境中,由于廣告鏈接、作弊鏈接的存在,反向鏈接數不能完全等他我那個也的重要程度。因此,搜索引擎往往考慮一些可靠的反向鏈接數。

4.Partial PageRank策略

Partial PageRank算法借鑒了PageRank算法的思想:對于已經下載的網頁中進行分析獲取到的URL,連同待抓取URL隊列中的URL,形成網頁集合,計算每個頁面的PageRank值,計算完之后,將待抓取URL隊列中的URL按照PageRank值的大小排列,并按照該順序抓取頁面。

如果每次抓取一個頁面,就重新計算PageRank值,一種折中方案是:每抓取K個頁面后,重新計算一次PageRank值。但是這種情況還會有一個問題:對于已經下載下來的頁面中分析出的鏈接,也就是我們之前提到的可知網頁那一部分,暫時是沒有PageRank值的。為了解決這個問題,會給這些頁面一個臨時的PageRank值:將這個網頁所有入鏈傳遞進來的PageRank值進行匯總,這樣就形成了該未知頁面的PageRank值,從而參與排序。下面舉例說明:

5.OPIC策略策略

該算法實際上也是對頁面進行一個重要性打分。在算法開始前,給所有頁面一個相同的初始現金(cash)。當下載了某個頁面P之后,將P的現金分攤給所有從P中分析出的鏈接,并且將P的現金清空。對于待抓取URL隊列中的所有頁面按照現金數進行排序。

6.大站優先策略

對于待抓取URL隊列中的所有網頁,根據所屬的網站進行分類。對于待下載頁面數多的網站,優先下載。這個策略也因此叫做大站優先策略。

總結

以上是生活随笔為你收集整理的爬虫原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。