當前位置:
首頁 > 最新 > Python爬蟲之正則表達式

Python爬蟲之正則表達式

微信公眾號開發已經告一段落了,這幾天一直在想之後為大家帶來什麼的呢?因為我不想發一些 Python 基礎的文章,我覺的那樣是比較浪費時間的,浪費大家的時間,比較基礎的語法知識網上都是比較容易找的到,而且寫的也是非常的好,所以我覺得之後為大家帶來一些 Python 強大的操作,因為想之後寫爬蟲方面的知識,所以從現在開始就帶大家一步一步的走向爬蟲世界,今天想和大家分享的是:Python 中的正則表達式。

為什麼使用正則表達式?

典型的搜索和替換操作要求您提供與預期的搜索結果匹配的確切文本。雖然這種技術對於對靜態文本執行簡單搜索和替換任務可能已經足夠了,但它缺乏靈活性,若採用這種方法搜索動態文本,即使不是不可能,至少也會變得很困難。

通過使用正則表達式,可以:

·測試字元串內的模式。

例如,可以測試輸入字元串,以查看字元串內是否出現電話號碼模式或信用卡號碼模式。這稱為數據驗證。

·替換文本

可以使用正則表達式來識別文檔中的特定文本,完全刪除該文本或者用其他文本替換它。

·基於模式匹配從字元串中提取子字元串。

可以查找文檔內或輸入域內特定的文本。

例如,您可能需要搜索整個網站,刪除過時的材料,以及替換某些 HTML 格式標記。在這種情況下,可以使用正則表達式來確定在每個文件中是否出現該材料或該 HTML 格式標記。此過程將受影響的文件列表縮小到包含需要刪除或更改的材料的那些文件。然後可以使用正則表達式來刪除過時的材料。最後,可以使用正則表達式來搜索和替換標記。

好了,現在讓我們來看看具體的語法

不想看,看不下去,別著急,我們通過實際的例子來了解的!

那麼我們如何在一大堆的數據中快速的將它提取出來的呢?根據正則語法,我們可以這樣來定義一個pattern:w+@w+.com

為什麼要這樣來定義的呢?我們需要看看上面的圖片了呢!

"w" 的意思是單詞字元[A-Za-z0-9_]。注意是 "單字元串",可以是A-Z或者a-z或者0-9或者其他各國語言中的任意一個。

"+" 匹配前一個字元1次或無限次。那麼 "w+" 組合起來的意思就是匹配一次或無限多次的但字元串[A-Za-z0-9]組合的字元串。

"@" 是郵箱的特定字元,所以固定不變。

第二個 "w+" 與前一個是一個道理,匹配一次或無限次的[A-Za-z0-9]組合的字元串。

" . " 的含義是將" . "轉義,因為 " . " 本身也是正則語法中的其中一種,為了真的得到 ".com" 而不是帶有功能的" . ", 所以在前面加上 "" 轉義字元。

這個又是什麼意思?

w+@與之前一樣

(w+.)?中的「 ? 」是匹配0次或1次括弧分組內的匹配內容,"()" 則表示被括內容是一個分組,分組序號從pattern字元串起始往後依次排列。分組的概念非常重要,在後面 「匹配對象方法」 章節會著重介紹其如何使用。

w+.com與之前一樣

因為是匹配0次或1次,那麼就意味著括弧內的部分是可有可無的,所以這個pattern就可能匹配兩種郵箱格式。

「?」是0次或1次,那麼w+@(w+.)*w+.com模式就更厲害了," * "可以匹配0次或無限次。

明白了這個之後,相信你應該對正則表達式有一個概念了,但還有很多種語法以及組合方法需要在實踐中反覆練習。

實踐

有些清楚了之後,我們現在就直接來看看在真正的使用中是如何高效的使用的呢,這是 50 行爬去貓眼貓眼TOP 10 中的一段代碼,其中就用到了正則表達式,這裡我還附上網頁解析的圖片,方便大家更好的理解其中的強大。我們要爬取的內容分別是:電影名稱,圖片鏈接,上映時間,評分! 大家可以看到pattern 裡面的正則表達式內容

.匹配除換行符
之外的任何單字元

*  匹配前面的子表達式零次或多次。

? 匹配前面的子表達式零次或一次,或指明一個非貪婪限定符。

(注釋:這裡.是另一個元字元,匹配除了換行符以外的任意字元。*同樣是元字元,不過它代表的不是字元,也不是位置,而是數量——它指定*前邊的內容可以連續重複使用任意次以使整個表達式得到匹配。因此.*連在一起就意味著任意數量的不包含換行的字元。其中(.*?)是匹配沒有 html 標籤,只有內容)

相信大家對比兩張圖片就可以看明白了,看到了這裡,已經對正則表達式有一些認識了的吧,對於記表格里的語法最好的方式就是勤加練習,編程是練習出來的,絕不是看就能學會的,一定要動手實踐。

另外,我覺得如果一篇文章加入太多內容的話,會顯得比較枯燥無味,大家也許不會完整的看不下去,所以我一般會以實踐為重點來介紹,可以說是提起興趣吧,具體的方法百度上有比我寫的更好的!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

十五分鐘了解 Python 並發編程
Python如何自動下載文件

TAG:Python |