Python 爬蟲4——使用正則表達式篩選內容


        之前說過,使用urllib和urllib2,只是為了獲取指定URL的html內容,而對內容進行解析和篩選,則需要借助python中的正則表達式來完成

 

一、預備知識:

1.正則表達式簡述:

        什么是正則表達式?正則表達式就是可以匹配文本片段的模式,最簡單的正則表達式就是一個字符串,用於在文本中匹配到此字符串自身。

 

2.常用正則表達式:

        設計正則表達式的時候有幾個注意點如下:

a.特殊符號需要加轉移符:如要匹配'china.com',則正則表達式格式應為'china\\.com';

b.字符集(使用中括號[]來包含字符串組成字符集):如[a-z]表示匹配從a到z之間的字符;此外,還有一個反轉字符集,使用^符號開頭:如[^abc]表示匹配除了a、b、c三個字符之外的字符;

c.選擇符:如要匹配'python'和'page',寫出來的模式為'python|page',其中‘|’是管道符號;

d.子模式:如‘p(ython|age)’;

e.可選項:在模式后面加上問好(?),那該模式就變成了可選項,即其可能出現在匹配到的字符串中,但是並非必須的,如r'(http://)?(www.)?shuhe.com'可匹配的結果有:

        http://www.shuhe.com、http://shuhe.com、www.shuhe.com、shuhe.com

f.重復子模式:

        (pattern)*:允許模式重復0次或多次

        (pattern)+:允許模式重復1次或多次

        (pattern){m,n}:允許模式重復m~n次

例如:

        r'w*\.python\.org'匹配'www.python.org'、'.python.org'、'wwwwww.python.org'

        r'w+\.python\.org'匹配'w.python.org';但不匹配'.python.org'

        r'w{3,4}\.python\.org'只能匹配'www.python.org'和'wwww.python.org'

 

二、re模板的使用:

        在python中封裝了一些常用的正則表達式在re模板中,使用時只需將該模板引入到當前項目中即可:

        

        上述是re中常用的正則表達式,使用步驟為:

        1.先將正則表達式的字符串形式編譯為Pattern實例;

        2.然后使用Pattern實例處理文本並獲得匹配結果(一個Match實例);

        3.最后使用Match實例獲得信息,進行其他的操作。

例如:

# encoding: UTF-8  
import re  
   
# 將正則表達式編譯成Pattern對象  
pattern = re.compile(r'hello')  
   
# 使用Pattern匹配文本,獲得匹配結果,無法匹配時將返回None  
match = pattern.match('hello world!')  
   
if match:  
    # 使用Match獲得分組信息  
    print match.group()  
   
### 輸出 ###  
# hello

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM