網路爬蟲(web crawler)一般被用來採集網路上的資訊,也叫做網路鏟(web scraper),網路蜘蛛(web spider)。顧名思義,網路爬蟲就是先爬到要採集的網頁上,然後對資料資訊進行採集。
1. 了解爬蟲的工作原理
2. http抓取工具
3. 高階功能
網際網路最早是作為科研資訊的一種交流方式,而現在網際網路需要處理的內容則變得越來越多,其所涉及到的技術也越來越複雜。
儘管網際網路的多層結構(osi模型)很複雜,但是其本質仍然是由一組組訊息組成的。一些訊息用於訊息請求,一些訊息用於訊息響應,還有一些訊息則包含有發給機器的某個應用程式的檔案資訊和指令。這些請求通過網際網路從乙個位置(客戶端)傳送到另乙個位置(服務端),迴圈不止。
這裡用乙個例子對上面提到的過程進行簡單的描述。a為伺服器,b為客戶端,當b想要連線到a時,會發生下面的行為:
a. b傳送一連串的二進位制資料,這些資料構成了一種資訊,資訊中包含了請求頭和訊息體。請求頭中則包含了b的本地路由器mac位址和a的ip位址。訊息體則包含了b對a的應用的請求。
b. b的本地路由器收到所有的二進位制資料,並將這些資料打包(packet),從b自己的mac位址傳送到a的ip位址中。b的路由器將資料報加上自己的ip位址作為傳送位址,通過網際網路將資料進行傳送。
c. a在自己的ip位址收到了資料報。
d. a讀取資料請求頭中的目標埠(通常是網路應用的80埠),然後將它傳遞到對應的網路伺服器應用上。
e. 網路伺服器應用從伺服器處理器收到資料,資料顯示為:
這是乙個get/post請求f. 網路伺服器引用找到對應的html檔案,並將之打包為乙個新的資料報傳送給b,然後通過它的本地路由器傳送出去並被b接收。請求檔案為***.html
同時,網際網路中還存在著不同的通訊方式,並通過不同的協議或語言對通訊方式進行控制。比如可以通過smtp協議手法郵件、通過voip協議打**、通過ftp上傳郵件。每個協議都為請求頭定義了不同的字段, 採用不同的資料編碼、手法位址或名稱,以及其它資料型別。而用於**資訊的請求、傳送和接收的協議則是http(hypertext transfer protocol,超文字傳輸協議)。
上面提到,超文字傳輸協議是用於**資訊的請求、傳送和接收。乙個http訊息主要包括兩個部分:頭欄位(header field)和資料字段(data field)。每個頭字段都由一對標題和值組成(類似於python中的字典)。這些欄位的標題是http標準中預先定義的。在乙個http資料報中可能會出現60多中頭字段,使用比較多的為:
名稱描述
示例user-agent
字串,表示發出請求的瀏覽器和作業系統資訊
mozilla/5.0 (x11; ubuntu; linux x86_64; rv:28.0) gecko/20100101 firefox/28.0
cookie
變數,被網路應用用來儲存會話資料和其他資訊
「_utma:20549163.147923691.1398729710.13
98729710.1398858679.2」
status
**,表示網頁請求成功與否
「200」(成功),「404」(檔案未找到)
當http從瀏覽器收到乙個資料報時,資料報的內容一定被看作是乙個**。**的結構由html(hypertext markup language,超文字標記語言)構成。
html用包含標記的文字檔案來告訴瀏覽器怎麼顯示整個頁面,html檔案的擴充套件名為htm或html。
helll,worlddisplay:bold
開啟該html檔案,就能夠在瀏覽器中看到該網頁。上述文件中的資訊有:
a. 第乙個標籤為,該標籤告訴瀏覽器此處為html文件的起始位置,html文件的最後乙個標籤為,該標籤告訴瀏覽器此處為html文件的終止位置。
b. 在標籤之間的為頭資訊。在瀏覽器介面中,頭資訊不被顯示。
c. 在和標籤之間的為文件標題,顯示在瀏覽器視窗的標題欄。
d. 在和標籤之間的為正文,會被顯示在瀏覽器中。
e. 在標籤之間的文字會被加粗顯示。
html文件中還包含幾個概念:
a. html元素:html文件是由html元素定義的,指的是從開始標籤到結束標籤的所有**。
html元素以開始標籤起始b. html 標籤:html 標籤用來組成html元素。html元素以結束標籤終止
元素的內容是開始標籤與結束標籤之間的內容
某些 html 元素具有空內容
空元素在開始標籤中進行關閉(以開始標籤的結束而結束)
大多數 html 元素可擁有屬性
html標籤兩端有兩個包括字元:「<」和「>」,這兩個包括字元被稱為角括號。c. html 屬性:屬性為 html 元素提供附加資訊。html標籤通常成對出現,比如和。前面乙個是開始標籤,第二個是結束標籤,在開始和結束標籤之間的文字是元素內容。
html標籤是大小寫無關的,跟表示的意思相同。
html標籤可以擁有屬性。屬性提供了有關html元素的更多的資訊。css(cascading style sheets,層疊樣式表)是配合html對**進行定義的語言。css可以為**物件定義顏色、位置、尺寸、和背景色等屬性。樣式通常儲存在外部的 .css 檔案中。通過僅僅編輯乙個簡單的 css 文件,外部樣式表使你有能力同時改變站點中所有頁面的布局和外觀。屬性總是以名稱/值對的形式出現,比如:name="value"。
屬性總是在 html 元素的開始標籤中規定。
屬性例子 1:
定義標題的開始。
擁有關於對齊方式的附加資訊。
屬性例子 2:
定義 html 文件的主體。
擁有關於背景顏色的附加資訊。
屬性例子 3:
定義 html **。
擁有關於**邊框的附加資訊。
屬性例子 4:
this is a link擁有關於鏈結位址的附加資訊
在簡單實現爬蟲之後,就要對資料進行某些處理,比如要對資料進行清洗、過濾、提取、儲存,之後可能還要提高資料爬取的效率,比如利用分布式,集群式的爬取策略等。
python爬蟲可以爬什麼
python爬蟲可以爬取的東西有很多,python爬蟲怎麼學?簡單的分析下 如果你仔細觀察,就不難發現,懂爬蟲 學習爬蟲的人越來越多,一方面,網際網路可以獲取的資料越來越多,另一方面,像 python這樣的程式語言提供越來越多的優秀工具,讓爬蟲變得簡單 容易上手。利用爬蟲我們可以獲取大量的價值資料,...
什麼是聚焦網路爬蟲?
聚焦網路爬蟲也叫主題網路爬蟲,顧名思義,聚焦網路爬蟲是按照預先定義好的主題有選擇地進行網頁爬取的一種爬蟲,聚焦網路爬蟲不像通用網路爬蟲一樣將目標資源定位在全網際網路中,而是將爬取的目標網頁定位在與主題相關的頁面中,此時,可以大大節省爬蟲爬取時所需的頻寬資源和伺服器資源。聚焦網路爬蟲主要應用在對特定資...
什麼叫python爬蟲 Python 爬蟲是什麼
python爬蟲即使用python程式開發的網路爬蟲 網頁蜘蛛,網路機械人 是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。通俗的講就是通過程式去獲取web頁面上自己想要的資料,也就是自動抓取資料。python 爬蟲即使用 python 程式開發的網路爬蟲 網頁蜘蛛,網路機械人 是一...