GitHub程式碼練習地址:正則1:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac15_RE1.py
正則2:match、search、findall函式的使用案例:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac16_RE2.py
一、頁面解析和資料提取
①結構化資料: 先有的結構,在談資料
JSON檔案
JSON Path
轉換成Python型別進行操作(json類)
XML檔案
轉換成python型別(xmltodict)
XPath
CSS選擇器
正則
②非結構化資料:先有資料,再談結構
文字
電話號碼
郵箱地址
通常處理此類資料,使用正則表示式
Html檔案
正則
XPath
CSS選擇器
二、正則簡單應用
正則表示式:一套規則,可以在字串文字中進行搜查替換等
python中正則模組是re
使用大致步驟:
1. compile函式將正則表示式的字串編譯為一個Pattern物件
2. 通過Pattern物件的一些列方法對文字進行匹配,匹配結果是一個Match物件
3. 用Match物件的方法,對結果進行操縱
正則常用方法:
match: 從開始位置開始查詢,一次匹配
search:從任何位置查詢,一次匹配, 案例v25
findall: 全部匹配,返回列表, 案例v26
finditer: 全部匹配,返回迭代器, 案例v26
split: 分割字串,返回列表
sub:替換
匹配中文
中文unicode範圍主要在[u4e00-u9fa5]
貪婪與非貪婪模式
貪婪模式: 在整個表示式匹配成功的前提下,儘可能多的匹配
非貪婪模式: xxxxxxxxxxxxxxxxxxxxxx, 儘可能少的匹配
python裡面數量詞預設是貪婪模式
例如:
查詢文字abbbbbbccc
re是 ab*(*表示可以有一個或多個,也可以沒有)
貪婪模式: 結果是abbbbbb
非貪婪: 結果是a