1. 程式人生 > 其它 >爬蟲入門隨筆-2

爬蟲入門隨筆-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】+匹配多個數字