程式設計小菜今天也要踏上學習爬蟲的征程啦!
對于啥都不懂的小菜看了很多大佬的部落格,有點點小啟發,就趕緊用小本本記下來啦
網絡爬蟲(Web Spider):通過網頁之間的連結來層層抓取,即從某網站的一個給定的網頁開始,抓取裡面的内容,再在該網頁中的連結中找到其它網頁,直到将該網站的所有内容抓取完
在了解了爬蟲是什麼之後,我們呢就要來分析其最基礎的工作原理
網絡爬蟲有三大子產品:抓取,分析,存儲
一、抓取
即從伺服器上擷取資料,抓取網頁實際就是在浏覽器的服務端發送請求,将伺服器端的檔案抓到本地,再進行解釋,展現
(而浏覽器實際就是将HTML的代碼進行解析,成為我們的網頁樣式)
了解Http協定
打開網頁實際都是以http開頭的字元串,
e.g. http://www.baidu.com
故我們需要先了解我們的Http協定,即從WWW伺服器傳輸超文本到本地浏覽器的傳送協定
實質:永遠都是用戶端發送請求,伺服器回送響應(即隻要用戶端不發起請求,伺服器就不會推送任何消息)
URI和URL
在了解了Http之後,我們就要知道這個網站位址字元串的含義
而URL就是我們在浏覽器中輸入的這個字元串 http://www.baidu.com
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL6lEROd3a65EMRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2UTO1ATN1kDM1EDOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
-
URI(通用資源辨別符)
Web上可用的每種資源 - HTML文檔、圖像、視訊片段、程式等由一個URI進行定位
(實際是通過HTTP協定存取資源的Internet路徑,一個URL對應一個資料資源)
三部分組成:
1 存放資源的主機名
資源自身的名稱,由路徑表示
2 片段标志符
有的URI指向一個資源的内部。 這種URI以"#"結束,并跟着一個anchor标志符(稱為片段标志符)
3 相對URI
相對URI不包含任何命名規範資訊。它的路徑通常指同一台機器上的資源。相對URI可能含有相對路徑
-
URL(統一資源定位符)
URL是URI命名機制的一個子集
-
URL的格式
第一部分是協定(或稱為服務方式)
第二部分是存有該資源的主機IP位址(有時也包括端口号)
第三部分是主機資源的具體位址,如目錄和檔案名等
-
注意:
第一部分和第二部分之間用“://”符号隔開,第二部分和第三部分用“/”符号隔開。第一部分和第二部分是不可缺少的,第三部分有時可以省略
是Internet上用來描述資訊資源的字元串,主要用在各種WWW客戶程式和伺服器程式上
采用URL可以用一種統一的格式來描述各種資訊資源,包括檔案、伺服器的位址和目錄等
簡單比較:
URI表示請求伺服器的路徑,定義這麼一個資源。
而URL同時說明要如何通路這個資源(http://)
//以上URI和URL為搜狗百科的搜尋結果,具體可自行百度,我隻做部分了解
爬取方法
由于我使用的是python3,python自帶的urllib庫可實作一般網頁的抓取
但是我們也可安裝requests,庫函數比較豐富
(其安裝方法在安裝插件那一篇已經提過了,pip install request即可)
故我們後面介紹一些requests的一些基本函數
爬取政策
可采用深度優先(棧)或廣度優先(隊列)來進行網頁間的爬取,注意該連結是否被通路過(資料結構中有相關解釋)
二、分析
将需要的内容提取出來,分析工具有正規表達式,BeautifulSoup,lxml,後面我們将分篇描述
三、存儲
我們可以選擇存入的文本檔案,也可以選擇存入 MySQL 或 MongoDB 資料庫等
四、Scrapy架構
使用了Twisted異步網絡庫來處理網絡通訊,其元件比較複雜,我們會在學習了一些簡單的爬取之後再進行叙述,其涉及到大批量的資料爬取,故我們需要先打好基礎
但是我們先了解一下部分的東西,知道一些我們後面會接觸的大部分内容
當然,爬蟲對于網站也是有一定的危害的,會對原有網頁造成騷擾而如果将爬取來的内容進行牟利,也會陷入法律責任,故我們要合法使用爬蟲爬取我們想要的資源哇(嘻嘻嘻)
Robots協定
即網絡爬蟲排除标準
作用:網站告知網絡爬蟲哪些頁面可以抓取,哪些不行
形式:在網站根目錄下的robots.txt檔案
使用:
網絡爬蟲:自動或人工識别robots.txt,再進行内容爬取
限制性:Robots是建議但非限制性,網絡爬蟲可不遵守,但存在法律風險
(可通路任何網頁的robots協定,進入官網檢視,但不是所有的網站都有)
基本文法:
User-agent: *
Disallow: /
#注釋
*表示所有
/表示根目錄
第一篇對于爬蟲知入門的學習就到此結束啦!
我們後面将對每一個部分進行細緻的學習