咱們可以使用 urllib 向網頁請求並獲取其網頁數據。可是抓取信息數據量比較大,咱們可能須要其中一小部分數據。對付剛纔的難題,就須要正則表達式出馬了。正則表達式能幫助咱們匹配過濾到咱們須要的數據,但它學習起來很是枯燥無味。你可能會說,我尚未開始想學習正則表達式,你就來打擊我? 莫慌!層層遞進地學習,一步一個腳印地學習,很快就會學會了。對於爬蟲,我以爲學會最基本的符號就差很少了。正則表達式
1 正則表達式
下面是一張關於正則表達式字符的圖,圖片資料來自CSDN。先把圖中字符瞭解清楚,基本上算是入門。微信
2 re 模塊
Python 自1.5版本起經過新增 re (Regular Expression 正則表達式)模塊來提供對正則表達式的支持。使用 re 模塊先將正則表達式填充到 Pattern 對象中,再把 Pattern 對象做爲參數使用 match 方法去匹配的字符串文本。match 方法會返回一個 Match 對象,再經過 Match 對象會獲得咱們的信息並進行操做。下面介紹幾個 re 經常使用的函數。編輯器
2.1 compile 函數
compile
是把正則表達式的模式和標識轉化成正則表達式對象,供 match() 和 search() 這兩個函數使用。它的函數語法以下:函數
第一個參數是
pattern
,指的正則表達式。學習第二個參數
flags
是匹配模式,是個可選參數。可使用按位或’|’表示同時生效,也能夠在正則表達式字符串中指定。匹配模式有如下幾種:url
該方法返回的結果是一個 Pattern 對象。spa
2.2 match 函數
match()
函數只在字符串的開始位置嘗試匹配正則表達式,也就是說只有在 0 位置匹配成功的話纔有返回。若是不是開始位置匹配成功的話,match() 就返回 none。它的函數語法以下:.net
第一個參數:匹配的正則表達式3d
第二個參數:要被匹配的字符串code
flags 是可選參數,跟 compile 用法類似
匹配成功 re.match 方法返回一個匹配的對象,不然返回None。要想得到匹配結果,既可使用
groups()
函數獲取一個包含全部字符串的元組(從 1 到 所含的小組號),也可使用group(組號)
函數獲取某個組號的字符串。
match
函數用法的示例代碼:
2.3 search 函數
search()
函數是掃描整個字符串來查找匹配,它返回結果是第一個成功匹配的字符串。
參數用法以及返回結果跟match
函數用法相同。
search
函數用法的示例代碼:
2.4 findall 函數
findall
函數在字符串中搜索子串,並以列表形式返回所有能匹配的全部子串。
參數用法以及返回結果跟match
函數用法相同。
findall
函數用法的示例代碼:
做者:猴哥,公衆號:極客猴。愛好讀書,喜歡鑽研技術,夢想成爲文藝青年的IT Boy。
- END -

分享乾貨的公衆號


本文分享自微信公衆號 - 極客猴(Geek_monkey)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。