Python網絡爬蟲學習手記(1)——爬蟲基礎

一、爬蟲基本概念

網絡爬蟲(又被稱爲網頁蜘蛛,網絡機器人,在FOAF社區中間,更常常的稱爲網頁追逐者),是一種按照必定的規則,自動地抓取萬維網信息的程序或者腳本。--------百度百科html

簡單的說,爬蟲就是獲取目標網頁源代碼,並提取和保存網頁信息的自動化程序或者腳本。網絡爬蟲腳本或者程序通常包含以下幾個步驟:數據庫

A.獲取網頁源代碼json

爬蟲首要的任務就是獲取須要爬取的目標網頁,也就是網頁源代碼,通常網頁源代碼就是一系列HTML代碼後端

B.提取信息瀏覽器

獲得了網頁源代碼後,接下來就是分析該HTML代碼,按照必定的規則或者方法,從中提取咱們想要的數據安全

C.保存數據服務器

提取了想要的數據後,通常須要將咱們爬取到的數據保存到某個地方,如最簡單的方式就是保存到本地爲txt、json格式的文件,更高級的就是搭建數據庫服務,如MySQL等,將數據存儲到數據庫中網絡

D.整合成可執行程序或者腳本架構

用於快速自動爬取大量數據,並處理爬取過程當中各類異常、錯誤等操做,確保爬取的高效運行工具

二、HTTP原理和網頁基礎

上面對於爬蟲的基本介紹知道,爬蟲就是爬取網頁源代碼並提取信息的過程,那麼咱們須要瞭解一些基本的網頁基礎知識、HTTP原理等。

     2.一、 HTTP基本原理

       在咱們訪問一個網頁站點時,首先都是在瀏覽器輸入一段URL,而後才能訪問該網站。什麼是URL?URL全稱是:Universal Resource Locator,即統一資源定位符,能夠從互聯網上獲得的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標準資源的地址。包括了訪問的協議http(https)、訪問路徑和資源名稱、端口號等,如https://www.baidu.com。

HTTP全稱:Hyper Text Transfer Protocol,中文譯爲超文本傳輸協議。HTTP協議用於從網絡傳輸超文本數據到本地瀏覽器,並保證高效而準確地傳送超文本文檔,而HTML源代碼就是一種超文本標記語言。該協議是由萬維網和互聯網工做小組聯合制定的,目前普遍使用的版本是HTTP1.1。除了HTTP外還有HTTPS,就是HTTP的安全版,經過HTTPS傳輸的內容都是通過SSL加密的,保證數據傳輸的安全。如咱們購票用的網站:https://www.12306.cn/,就是這樣的站點。

     2.二、 HTTP請求過程

 咱們在瀏覽器輸入一個URL站點,回車後正常就能在瀏覽器中看到網站頁面內容。實際上,這個過程是瀏覽器向所在的服務器發送了一個請求,告訴服務器須要請求什麼東西,服務器收到請求後進行處理和解析這個請求,若是處理解析這個請求OK,那麼就返回給瀏覽器對應的響應。響應中包含了頁面的源代碼等內容,瀏覽器再對響應中的源代碼進行解析,最後將解析後的網頁呈現出來。其大概過程就是:瀏覽器請求》服務器處理解析》服務器響應並傳給瀏覽器》瀏覽器解析呈現網頁。

下面經過實際的網絡站點,學習HTTP請求和響應的過程,以及過程當中都發生了怎樣的網絡請求。以Chrome瀏覽器訪問百度站點:https://www.baidu.com/爲例。

 打開Chrome瀏覽器,鼠標右鍵菜單選擇【檢查】或者直接快捷鍵【F12】打開開發者工具,切換到【Network】。在瀏覽器中輸入百度站點:https://www.baidu.com/,回車後,看看發生的網絡請求。以下圖:

 

 其中第一條網絡請求:www.baidu.com,就是瀏覽器向百度服務器發送的一條請求訪問百度站點的請求,點擊這個請求,便可看到請求的詳細信息和內容。

首先是General部分,描述了請求的URL、請求的方法、響應狀態碼以及遠程服務器的地址和端口;

在往下,就是Response Headers和Request Headers,分別是響應頭和請求頭。包含了響應和請求的部分相關信息和內容,下面具體看看這個請求和對應的響應都哪些內容。

請求的組成

請求由客戶端即瀏覽器向服務端發送,發送的請求有4個方面的內容:請求方法(Request Method)、請求的站點(Request  URL)、請求頭(Request  Headers)、請求體(Request Body)

1.請求的方法

常見的請求有get,post,put...類型。get類型的接口通常是指獲取信息的接口,好比列表查詢的功能,點擊查詢按鈕就調用一個get接口,而後把信息返回出來。就是指把內容從服務器(後端)拉下來。Post類型通常是提交表單的功能,好比註冊、導入數據之類的就是post接口。就是指把內容推到服務器(後端)上去。

2.請求的站點

請求的網站,就是在瀏覽器輸入的一段URL網址

3.請求頭

請求頭用來講明服務端使用的附件信息,也就是HTTP協議規定的附加內容,必須按照協議規則辦事。以下圖訪問百度站點的請求頭信息:

 

 看看請求頭信息的相關字段說明

Accept:請求報頭域,用來指定客戶端可接受哪些類型的信息,如上圖能夠接受text/html等類型的信息

Accept-Encoding和Accept-Language:指定客戶端可接受的編碼和語言

Connection:鏈接狀態

Cookie:存儲的Cookie信息,主要用於維持當前會話

Host:須要訪問的站點地址

User-Agent:用於向服務端識別客戶使用的操做系統和瀏覽器版本等信息

4.請求體

請求體通常是承載着POST類型請求的表單數據,GET類型的請求體爲空

響應的組成

響應由服務端返回給瀏覽器的信息,響應的內容有3個方面:響應狀態碼(Response Status Code)、響應頭(Response Headers)和響應體(Response Body)

1.響應狀態碼

響應狀態碼錶示服務器對於請求信息的處理結果,如200表示響應正常、404表示頁面未找到、500表示服務器出錯等

 2.響應頭

響應頭包含了服務端對請求的應答信息,以下圖的響應頭信息:

 

看看響應頭相關關鍵字段說明

Content-Type:文檔類型,指定返回的文檔是什麼,如text/html表示返回的是HTML文檔

Server:服務器的信息,如服務器名稱、版本等

Set-Cookie:設置Cookie

Expires:指定響應的過時時間

3.響應體

就是網頁的HTML源代碼,點擊【Preview】頁籤就能夠看到網頁的源代碼

 

2.三、 網頁構成

 現代化的網頁呈現給咱們的老是絢麗多彩的,有着豐富的視覺感覺,不一樣網頁上面每每有着諸多各式各樣樣子,並搭配合理的排版、豐富的圖片、動畫效果等。那麼這些網頁是怎麼構成的?構成網頁主要有三大部分:HTML、CSS、JavaScript,其中HTML構成了網頁的基礎架構,CSS肯定了網頁的排版樣式,JavaScript決定了網頁的可塑造性和動態呈現。下面具體看看這三大部分:

1.HTML

HTML:全稱Hyper Text Markup Language,即超文本標記語言。網頁上的文字、段落、圖片、按鈕等元素就是由HTML定義,如img標籤表示圖片,p標籤表示段落等等,在Chrome瀏覽器打開百度站點,右擊鼠標菜單中選擇【檢查】或者直接【F12】打開開發者工具在【Elements】選項欄就能夠看到網頁的HTML源代碼,以下圖:

 

能夠看到網頁HTML源代碼,每一個標籤對定義了一個節點和節點的屬性,他們構成了一個HTML樹。這些節點標籤對陳列在HTML樹中,它們存在的必定的層級關係,經常使用父節點、子節點和同級節點表示。具體對於HTML的學習,能夠參考W3School網站學習:http://www.w3school.com.cn/html/index.asp

2.CSS

CSS:全稱Cascading Style Sheets,即層疊樣式表。CSS用來肯定網頁頁面的排版樣式的標準,指定了網頁中文字的大小、顏色、位置等屬性。以下圖定位到【百度一下】這個按鈕,查看樣式:

 

該CSS樣式肯定該按鈕的width、height,即寬和高的像素大小,以及文字顏色color:white等信息,按鈕背景色:backgroud

3.JavaScript

JavaScript就是JS,一種腳本語言,用來將JS文件嵌入到HTML代碼中提供交互式的動態效果,如提示框、輪播圖、下載進度條等等。其在HTML的標籤對是由script標籤對來定義

綜上所述,HTML定義了網頁的內容和結構,CSS則描述了網頁元素的佈局渲染和位置效果,JavaScript定義了網頁的交互性和動畫效果,這三個構成了豐富網頁呈現的基礎架構。

在瞭解了爬蟲基本概念和HTTP協議以及網頁基本構成後,基於這些方面的認知,再開始學習如何爬取網站並提取信息。

相關文章
相關標籤/搜索