爬蟲入門隨筆-2
網頁解析
HTML語言
用URLopen抓取出來的是html語言編寫出來的字元流
html語言:超文字編輯語言
·帶著尖括號的tag
·網頁的正文:圖片,視訊,音訊的超級連線
一個URL對應著沒有干擾的,純文字的位元組流
html以<html>和</html>標記開始和結束
·在開始和結束標記之間包含head和body兩大部分
·在title描述中是對於整個網頁的整體描述,對於網頁的整體描述都比較重要
·在一個head中,只需要title,其他的東西爬蟲不一定需要
·title是獨一無二的標記,對於處理正則表示式比較容易
·在body中放有內容
·在內容中含有的標記(大小寫等)也可以去掉
尖括號中表示標記,標記都是成對出現的
所有的標記都不是內容,都可以不要,需要網頁解析來實現
標記可以提示我們需要選取那些內容
網頁解析方法
·基於html文件格式的,用於從每個html文件中抽取相關資訊
·對於html文件,有兩種看待方式:
-將文件看作字元流
·正則表示式
-將文件看作樹結構
·基於DOM
在字元流中,使用正則表示式做一個過濾器,只過濾特定格式的資訊
正則表示式是一種規則,有特定格式
看作字元流,從左往右依次讀取文件
html文件還可以看作是一個樹
·有一個根結點,是<html>
·有兩個分支,一個是body,一個是head
·看作是一個DOM樹,從根結點開始訪問,訪問head的時候就不需要訪問body分支
正則表示式
——RE(規則表示式)
是對字串操作的一種邏輯公示
事先定義好的特定字元,特定字元的組合,組成一個“規則字串”,用來表達對字串的過濾邏輯
是由字元和元字元組成的字串
正則表示式文字把正則表示式物件中匹配的物件留下,把不匹配的物件過濾
正則表示式引擎在每個語言中都含有
python中有自帶的模組來提供正則表示式引擎
我們要做的:
·根據需要,自己寫一個正則表示式規則
·用規則對字串進行過濾,然後得到結果
正則表示式是一個過濾的規則
Java指令碼時候正則表示式的,來確定程式碼是符合要求的
各種開發環境和作業系統均支援正則表示式
python的re模組
內建模組,直接import re
參考:菜鳥教程的re教程
步驟:
—re.compile()方法,構造正則表示式
·將正則表示式編譯為正則表示式物件
·引數:正則表示式
·返回:正則表示式物件
—使用正則表示式匹配
·正則表示式物件.match()
·正則表示式物件.search()
例:
import re
r2=re.compile(‘World$’,re.l) //re.l表示不區分大小寫,可以不寫,$表示以什麼結尾,是一個運算子
If r2.search(‘helloworld\n’):
print(“search succeeds”)
else
print(“~”)
r2表示不區分大小寫,以word結尾的規則
用r2的規則進行search操作,對文件進行篩選
正則表示式語法:
-^匹配字串開始的位置
-$匹配字串結束的位置
-除了換行以外的任意字元
【0-9】匹配單個數字。 //這是一個數字,可以是0-9中的任意一個 //Java指令碼的寫法
-+匹配一個或多個
·【0-9】+匹配多個數字