天天看點

python之爬蟲入門(一)

程式設計小菜今天也要踏上學習爬蟲的征程啦!

對于啥都不懂的小菜看了很多大佬的部落格,有點點小啟發,就趕緊用小本本記下來啦

網絡爬蟲(Web Spider):通過網頁之間的連結來層層抓取,即從某網站的一個給定的網頁開始,抓取裡面的内容,再在該網頁中的連結中找到其它網頁,直到将該網站的所有内容抓取完

在了解了爬蟲是什麼之後,我們呢就要來分析其最基礎的工作原理

網絡爬蟲有三大子產品:抓取,分析,存儲

一、抓取

即從伺服器上擷取資料,抓取網頁實際就是在浏覽器的服務端發送請求,将伺服器端的檔案抓到本地,再進行解釋,展現

(而浏覽器實際就是将HTML的代碼進行解析,成為我們的網頁樣式)

了解Http協定

打開網頁實際都是以http開頭的字元串,

e.g. http://www.baidu.com

故我們需要先了解我們的Http協定,即從WWW伺服器傳輸超文本到本地浏覽器的傳送協定

實質:永遠都是用戶端發送請求,伺服器回送響應(即隻要用戶端不發起請求,伺服器就不會推送任何消息)

URI和URL

在了解了Http之後,我們就要知道這個網站位址字元串的含義

而URL就是我們在浏覽器中輸入的這個字元串 http://www.baidu.com

python之爬蟲入門(一)
  • 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異步網絡庫來處理網絡通訊,其元件比較複雜,我們會在學習了一些簡單的爬取之後再進行叙述,其涉及到大批量的資料爬取,故我們需要先打好基礎

但是我們先了解一下部分的東西,知道一些我們後面會接觸的大部分内容

python之爬蟲入門(一)

當然,爬蟲對于網站也是有一定的危害的,會對原有網頁造成騷擾而如果将爬取來的内容進行牟利,也會陷入法律責任,故我們要合法使用爬蟲爬取我們想要的資源哇(嘻嘻嘻)

python之爬蟲入門(一)
Robots協定

即網絡爬蟲排除标準

作用:網站告知網絡爬蟲哪些頁面可以抓取,哪些不行

形式:在網站根目錄下的robots.txt檔案

使用:

網絡爬蟲:自動或人工識别robots.txt,再進行内容爬取

限制性:Robots是建議但非限制性,網絡爬蟲可不遵守,但存在法律風險

(可通路任何網頁的robots協定,進入官網檢視,但不是所有的網站都有)

基本文法:

User-agent: *
Disallow: /
           

#注釋

*表示所有

/表示根目錄

第一篇對于爬蟲知入門的學習就到此結束啦!

我們後面将對每一個部分進行細緻的學習