python網絡爬蟲教程(二):最通俗易懂的網頁基礎教程

上一章我們介紹了網絡基礎,詳情可點擊如下鏈接python網絡爬蟲教程(一),瞭解了HTTP的基本原理以及瀏覽器與服務器之間的收發機制,本章我們就來學習網頁基礎,瞭解網絡的組成和結構等內容。

網頁的組成

網頁可以分爲三大部分:HTML、CSS和javaScript。如果把網頁比作一個人的話,HTML就相當於骨架,javaScript相當於肌肉,CSS相當於皮膚。三者結合起來才能形成一個完整的網頁。

1. HTML

HTML是用來描述網頁的一種語言,其全稱叫做作Hyper Text Markup Language,翻譯過來就是超文本標記語言。HTML是一種標籤語言,我們可以通過一個簡單的例子來直觀感受一個什麼是HTML,在桌面上新建一個文本文件,複製以下內容到文件中,並將文件後綴改爲”.html“

<!DOCTYPE html>
<html>
<head>
<meta charset="gbk">
<title>我的第一個 HTML 頁面</title>
</head>

<body>
<div id="container">
<div class="wrapper">
<h2 class="title">這是二級標題</h2>
<p>body 元素的內容會顯示在瀏覽器中。</p>
<p>title 元素的內容會顯示在瀏覽器的標題欄中。</p>
</div>
</div>
</body>
</html>

用瀏覽器打開可呈現以下頁面:

在這裏插入圖片描述
這就是最簡單的HTML實例,HTML文檔要遵守一定的格式規範,如果想了解更多關於HTML的內容可以訪問如下鏈接:HTML教程|菜鳥教程

在HTML中,所有標籤定義的內容都是節點,它們構成一個HTML DOM樹,DOM是W3C(萬維網聯盟)的標準,英文全稱Document Object Model,即文檔對象模型。它定義了訪問HTML和XML文檔的標準。更多關於HTML DOM的內容可以訪問如下鏈接:HTML DOM教程|菜鳥教程.
通過HTML DOM,樹中所有節點都可以通過javaScript訪問,所有節點都可以被創建、修改或刪除。節點樹中的節點彼此擁有層級關係,通常用父(parent)、子(child)和兄弟(sibing)等術語描述這些關係。

可以看到網頁中不同類型的元素通過不同類型的標籤來表示,例如title元素內容顯示在標題欄中,body元素內容顯示在瀏覽器中,各種標籤通過不同的排列嵌套才形成網頁框架。
在Chrome瀏覽器中打開百度,右擊並選擇”檢查“項打開開發者模式,這時在Elements選項卡中可以看到網頁的源代碼:圖二這就是HTML,這些標籤定義的節點元素相互嵌套組合形成了複雜的層次關係,從而形成了網頁的架構。

2. CSS

HTML定義了網頁的結構,但是隻有HTML頁面並不美觀,可能只是簡單的節點元素的排列,爲了讓網頁看起來更加美觀,這裏藉助了CSS。

CSS英文全稱Cascading Style Sheets,即層疊樣式表,是一種用來表現HTML或XML(標準通用標記語言的一個子集)等文件樣式的計算機語言,可以對網頁的文字大小、顏色、元素間距、排列等格式進行樣式處理,上圖中右側即爲一個CSS,例如:

#head_wrapper.s-ps-islite .s-p-top{
	position: absolute;
	bottom: 40px;
	width: 100%;
	height: 181px;
}

就是一個CSS樣式,大括號前面是一個CSS選擇器,大括號內部是一條條樣式規則,例如position指定了這個元素的佈局方式爲絕對佈局,bottom指定元素的下邊距爲40像素,width指定了寬度爲100%佔滿父元素,height指定元素的高度。也就是說,我們將位置、寬度、高度等樣式配置統一寫成這樣的樣式,然後用大括號括起來,接着在大括號前加上CSS選擇器,就表示選擇器選中的這個元素就會根據這個樣式來顯示了。

3. JavaScript

JavaScript簡稱js,是一種腳本語言,我們在網頁裏可能看到一些交互和動畫效果,如下載進度條、提示框等,這通常就是JavaScript的功勞。
JavaScript通常也是以單獨的文件形式加載的,後綴爲.js,在HTML中通過script便籤即可引入,例如:

<script src="jquery-2.1.0.js"></script>

爬蟲的基本原理

如果我們把互聯網比作一張大的蜘蛛網,那一臺計算機上的數據便是蜘蛛網上的一個獵物,而爬蟲程序就是一隻小蜘蛛,沿着蜘蛛網抓取自己想要的獵物/數據,流程如下圖:在這裏插入圖片描述簡單來說,爬蟲就是獲取網頁並提取和保存信息的自動化程序,下面來簡要介紹一下上圖。

1. 發起請求

爬蟲首先要做的工作就是獲取網頁,前一章講了請求和響應的概念,向網站的服務器發起一個請求,首先要構造的就是網站的URL,其次構造請求方式,如果是GET請求,有時需要在URL中添加參數,如果網站設置了反爬措施,我們需要在請求頭中僞造User-Agent,讓服務器以爲這是由瀏覽器發起的請求,然後就可以獲取響應內容。

2. 獲取響應內容

從服務器返回的數據,有時候可能是網頁的源代碼、也可能是一串json字符串,但它們都是一個完整的響應,即包括請求頭、請求體等內容,如果我們需要從服務器獲得我們想要的數據,就需要根據服務器返回的內容制定不同的爬取策略和解析方式。

3. 解析內容

獲取網頁的響應後,接下來就是分析網頁源代碼,從中獲取我們想要的數據。首先,最通用的方法便是通過正則表達式提取,這是一個萬能的方法,但是在構造正則表達式時比較複雜且容易出錯。
另外,由於網頁的結構有一定的規則,所以還要一些根據網頁節點屬性、CSS選擇器或XPath獲取網頁信息的庫。使用這些庫,我們可以高效地從中提取網頁信息。

4. 保存數據

提取信息後,我們一般會將提取到的數據保存到某處以便後續使用。我們可以簡單將數據保存爲TXT文本或JSON文本,也可以保存到數據庫,如MySOL或MongoDB等。

學習了基礎知識後,我們就可以開始進入實戰環節了,下一章將教大家如何使用python常見的HTTP請求庫,並且開始對網站內容進行一些簡單的爬取,可以點擊python網絡爬蟲教程(三):詳解urllib庫進入下一章。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章