跟我學爬蟲 2 使用正規表示式解析文字

2022-08-10 18:15:15 字數 1960 閱讀 9228

上節簡單演示了如何獲取乙個網頁的源**,本節繼續,稍微提公升一下我們的水平,網頁的源**中通常包含了大量無用的東西,如果你了解html相關知識的話,就會知道網頁源**中還有大量的標籤、css**、js**,而這些對我們來說,一般都是不需要的,因此,當我們把網頁源**拿到手之後,還需要對它進行一定的處理,從中提取出我們需要的資訊。提取的方法有很多,而今天說的方法是利用正規表示式來提取資訊,關於正規表示式,詳細用法可參見python正規表示式指南。

正規表示式是對字串進行操作的一種邏輯公式,利用事先定義好的一些特定字元、以及這些特定字元的組合,組成乙個"規則字串",這個規則字串可以用來實現對待操作字串的定位,選取等操作。

在python中使用正規表示式需要用到python的標準庫中乙個模組re

>>> import re

簡單列一些下面會用到的正規表示式的特殊字元

不多說,先上**

>>> import requests

>>> url = ''

>>> response = requests.get(url)

>>> print response.content

>>>

首先分析一下ip位址的格式,1-3個數字然後是.然後是1-3個數字,這樣的重複,那麼可以這麼寫

[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+

分析一下:

[0-9]代表匹配任意乙個數字, +代表前面字元可以重複1到多次,因此[0-9]+可以匹配1到多個數字,當然也能匹配1-3個數字

\代表轉移, .代表匹配任意字元, \.代表去除.的特殊含義,使得.僅能匹配其自身

>>> content = response.content

>>> match_obj = re.search("[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+", content)

>>> match_obj

<_sre.sre_match object at 0x0000000002e37370>

>>> dir(match_obj)

['__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'end', 'endpos', 'expand', 'group', 'groupdict', 'groups', 'lastgroup', 'lastindex', 'pos', 're', 'regs', 'span', 'start', 'string']

>>> match_obj.group()

'123.114.37.67'

上面的**中使用了re.search方法將正規表示式作用於獲取的網頁源**上,然後再從返回值的group方法中獲取正規表示式匹配到的文字

簡單介紹一下re.search方法

search(pattern, string, flags=0)

scan through string looking for a match to the pattern, returning

a match object, or none if no match was found.

re.search方法接受三個引數,第三個先不說,pattern即為乙個正規表示式, string即待操作字串,然後返回值為乙個match object,這個物件的方法在上面的**中我們也可以看到,可以利用group方法獲取匹配到的內容

好了,本節就到這裡,舉的例子很簡單,不過你可以找一些複雜的網頁練練手,熟悉一下正規表示式的用法,以後肯定還會有很多地方會用到正規表示式的

跟我學正規表示式 8 使用後向引用

前一章中介紹了如何使用子表示式將字元分成組。這種分組的主要用途之一是可以控制組的重複次數 在前一章中已經演示過 本章中將介紹子表示式乙個更重要的用法 使用後向引用。理解後向引用 理解後向引用需求的最好辦法是看乙個例子。html 開發者經常使用段落標籤 content is divided into ...

跟我學正規表示式 8 使用後向引用

前一章中介紹了如何使用子表示式將字元分成組。這種分組的主要用途之一是可以控制組的重複次數 在前一章中已經演示過 本章中將介紹子表示式乙個更重要的用法 使用後向引用。理解後向引用 理解後向引用需求的最好辦法是看乙個例子。html 開發者經常使用段落標籤 content is divided into ...

python爬蟲 正規表示式解析

re.i 忽略大小寫 rtuhsgqe.m 多行匹配,將正則作用到源資料的每一行 re.s 單行匹配,將正則作用到整個源資料,輸出乙個整體字串 包括換行符也列印 string fall in love with you i love you very much i love she i love h...