本文章屬於爬蟲入門到精通系統教程第五講html
在爬蟲入門到精通第四講中,咱們瞭解了如何下載網頁,這一節就是如何從下載的網頁中獲取咱們想要的內容python
html = u""" <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文章的標題</title> </head> <body> <div id="app" class="container"> <h1>h1文字</h1> <label for="input">Input</label> <textarea id="input" rows="10" class="form-control"> </body> </html> """
咱們要獲取的html 如上所示,git
假如咱們要獲取文章的標題這幾個文字,那麼咱們應該怎麼作呢?github
咱們只要能定位到它,也就能獲取到它正則表達式
那麼,如何定位到它呢?express
很簡單,根據它兩邊的內容.segmentfault
咱們很簡單的能發現 它 左邊是<title> ,右邊是</title>app
因此,咱們如何找到文章的標題這幾個文字呢,只要左邊是<title>
,右邊是</title>
,那麼中間就是咱們要找的spa
下面用程序寫出來.net
能夠看到咱們正確匹配到了文章的標題,
咱們首先來看 pattern = '<title>(.*?)</title>'
咱們能夠發現這就是咱們上面講的,左邊是<title>
,右邊是</title>
,那麼中間的(.*?)
是什麼呢?這實際上是來用來聲明咱們要匹配的字符串是什麼,這邊咱們用的是(.*?)
,表示咱們要匹配的字符串能夠是任何東西,沒有格式要求。也就是俗稱"萬能匹配",你們能夠下圖的正則表達式語法,來解釋下爲何 .*?
是萬能匹配, .*?
外面的 ()
又是什麼鬼
string=html
表示咱們當前要被匹配的是咱們定義的html
最後flags=re.S
表示(.*?)
中的 .
能夠匹配包括換行符(見下面表)
[0]
是取返回列表中的第一個,主要是方便演示
圖片來自 博客園
代碼以下
本文使用notebook編寫完成,全文在github上
看完本篇文章後,你應該要:
學會最通用的一種正則表達式
re.findall('左右的字符串(.*?)右邊的字符串',等待匹配的字符串,flags)
你們想深刻了解正則表達式的話
請 先看這一篇 正則表達式30分鐘入門教程
再看這一篇 Regular expression operations
最後的最後,收藏的大哥們,能幫忙點個贊麼~