Python網(wǎng)絡(luò)爬蟲之正則表達(dá)式(一)

當(dāng)我們已經(jīng)獲取到一個(gè)完整的頁面HTML內(nèi)容時(shí)乡恕,如何從這些雜亂的內(nèi)容中鎖定并提取出我們所需要的內(nèi)容那昧甘?這就要用到一個(gè)十分強(qiáng)大的工具:正則表達(dá)式喜爷。


1?初識正則表達(dá)式


正則表達(dá)式是對字符串操作的一種邏輯公式澜沟,就是用事先定義好的一些特定字符撬槽、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”恤煞,這個(gè)“規(guī)則字符串”用來表達(dá)對字符串的一種過濾邏輯屎勘。


正則表達(dá)式并不是Python的一部分。正則表達(dá)式是用于處理字符串的強(qiáng)大工具居扒,擁有自己獨(dú)特的語法以及一個(gè)獨(dú)立的處理引擎概漱,效率上可能不如str自帶的方法,但功能十分強(qiáng)大喜喂。得益于這一點(diǎn)瓤摧,在提供了正則表達(dá)式的語言里,正則表達(dá)式的語法都是一樣的玉吁,區(qū)別只在于不同的編程語言實(shí)現(xiàn)支持的語法數(shù)量不同照弥;但不用擔(dān)心,不被支持的語法通常是不常用的部分进副。如果已經(jīng)在其他語言里使用過正則表達(dá)式这揣,只需要簡單看一看就可以上手了。


正則表達(dá)式的大致匹配過程是:1.依次拿出表達(dá)式和文本中的字符比較,2.如果每一個(gè)字符都能匹配给赞,則匹配成功机打;一旦有匹配不成功的字符則匹配失敗。3.如果表達(dá)式中有量詞或邊界塞俱,這個(gè)過程會(huì)稍微有一些不同姐帚。


2?正則表達(dá)式規(guī)則


下面是Python語言中正則表達(dá)式的元字符和匹配語法:


3?數(shù)量詞的貪婪模式與非貪婪模式


正則表達(dá)式通常用于在文本中查找匹配的字符串。Python里數(shù)量詞默認(rèn)是貪婪的(在少數(shù)語言里也可能是默認(rèn)非貪婪)障涯,總是嘗試匹配盡可能多的字符罐旗;非貪婪的則相反,總是嘗試匹配盡可能少的字符唯蝶。例如:正則表達(dá)式”ab*”如果用于查找”abbbc”九秀,將找到”abbb”。而如果使用非貪婪的數(shù)量詞”ab*?”粘我,將找到”a”鼓蜒。


注:我們一般使用非貪婪模式來提取網(wǎng)頁內(nèi)容。


4?反斜杠問題


與大多數(shù)編程語言相同征字,正則表達(dá)式里使用”\”作為轉(zhuǎn)義字符都弹,這就可能造成反斜杠困擾。假如你需要匹配文本中的字符”\”匙姜,那么使用編程語言表示的正則表達(dá)式里將需要4個(gè)反斜杠”\\\\”:前兩個(gè)和后兩個(gè)分別用于在編程語言里轉(zhuǎn)義成反斜杠畅厢,轉(zhuǎn)換成兩個(gè)反斜杠后再在正則表達(dá)式里轉(zhuǎn)義成一個(gè)反斜杠。


Python里的原生字符串很好地解決了這個(gè)問題氮昧,這個(gè)例子中的正則表達(dá)式可以使用r”\\”表示框杜。同樣,匹配一個(gè)數(shù)字的”\\d”可以寫成r”\d”袖肥。有了原生字符串咪辱,表達(dá)式也更加直觀了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末椎组,一起剝皮案震驚了整個(gè)濱河市油狂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寸癌,老刑警劉巖选调,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異灵份,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)哮洽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門填渠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事氛什≥汉” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵枪眉,是天一觀的道長捺檬。 經(jīng)常有香客問我,道長贸铜,這世上最難降的妖魔是什么堡纬? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蒿秦,結(jié)果婚禮上烤镐,老公的妹妹穿的比我還像新娘。我一直安慰自己棍鳖,他們只是感情好炮叶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渡处,像睡著了一般镜悉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上医瘫,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天侣肄,我揣著相機(jī)與錄音,去河邊找鬼登下。 笑死茫孔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的被芳。 我是一名探鬼主播缰贝,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼畔濒!你這毒婦竟也來了剩晴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤侵状,失蹤者是張志新(化名)和其女友劉穎赞弥,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體趣兄,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绽左,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了艇潭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拼窥。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡戏蔑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鲁纠,到底是詐尸還是另有隱情总棵,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布改含,位于F島的核電站情龄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捍壤。R本人自食惡果不足惜骤视,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望白群。 院中可真熱鬧尚胞,春花似錦、人聲如沸帜慢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粱玲。三九已至躬柬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抽减,已是汗流浹背允青。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卵沉,地道東北人颠锉。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像史汗,于是被迫代替她去往敵國和親琼掠。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 本文譯自 制作正則引擎的作者 Jan Goyvaerts 為工具 RegexBuddy 寫的教程版權(quán)歸原作者所有注...
    極客圈閱讀 3,290評論 0 25
  • 在前面我們已經(jīng)搞定了怎樣獲取頁面的內(nèi)容停撞,不過還差一步瓷蛙,這么多雜亂的代碼夾雜文字我們怎樣把它提取出來整理呢?下面就開...
    AromaMuzi閱讀 311評論 0 0
  • 正則表達(dá)式(regular expression)是一種可以在許多現(xiàn)代應(yīng)用程序和編程語言中使用的特殊形式的代碼模式...
    Android輪子哥閱讀 11,498評論 4 16
  • 正則表達(dá)式學(xué)習(xí)筆記 一篇記錄了學(xué)習(xí)正則表達(dá)式的筆記戈毒。 1. 轉(zhuǎn)義字符 在 HTMl 中轉(zhuǎn)義字符以 & 符號開頭艰猬,分...
    heyi_let閱讀 394評論 0 0
  • 七絕《荷仙》 因何龍女下凡塵? 彩霧輕云繞麗身埋市。 必是貪食人世饌冠桃, 喜蝶愛鳥退金鱗。 2019.12.08輕風(fēng)
    云淡風(fēng)輕客閱讀 760評論 0 2