網路爬蟲之正規表示式Python

2021-08-21 05:32:01 字數 2691 閱讀 8323

1、什麼是正規表示式

正規表示式是一種進行資料篩選的表示式

2、原子

原子是正規表示式中最基本的組成單位,每個正規表示式中至少要包含乙個原子。常見的原子型別有:

a、普通字元作為原子

b、非列印字元作為原子

c、通用字元作為原子

d、原子表

實戰操作:

匯入模組:

import re

import re

>>>pat="yue"

>>>url=""

>>>result1=re.search(pat,url)#search函式從某個字串中尋找符合規則的內容  表示式相當於內容規則  第乙個引數對應規格,第二個引數是總的字串

>>>print(result1)

<_sre.sre_matchobject; span=(16, 19), match='yue'>

>>>url2=""

>>>result2=re.search(pat,url2)

>>>print(result2)

none

b、非列印字元作為原子

import re

\t          #製表符  用於對齊

\n # 換行符

\w #通用字元  能夠匹配任意的字母數字下劃線

\d  #匹配任意一十進位制數字

\w #匹配與\w相反的字元   匹配除了字母數字下劃線以外任意字元

\s #匹配任意乙個空白字元

\d  #匹配除了十進位制數字外的任意字元

原子表:

pat="pyth[jsz]n"#   匹配pyth[中間或是j或是s或是中的乙個]n

>>>string="dgsfastgvepythjnagkle"

>>>result5=re.search(pat,string)

>>>print(result5)

<_sre.sre_matchobject; span=(10, 16), match='pythjn'>

3、元字元

*:  「s*」 匹配0次1次或多次前面字元    "ssss"

?:"s?"     匹配0次或1次  "ss"   "s"

+ :"s+"   匹配1次或多次 ,不匹配0次

.    :  匹配除了換行符外所有字元

:  匹配前面的原子恰好出現了3次   t

:  前面的原子至少出現了n次

:前面的原子至少出現了n次  至多出現了m次

()提取中間的內容

4、模式修正符

模式修正符,即可以在不改變正規表示式的情況下,通過模式修正符改變正規表示式的含義,從而實現一些匹配結果的調整等功能。

i :忽略大小寫

m :進行多行匹配

l:本地化識別匹配

u:根據unicode  字元 解析字元

s: 指的是點也 匹配換行符

import re

pat1="python"

pat2="python"

string="dgdfdskdjasgpythonhkloe"

rst1=re.search(pat1,string)

rst2=re.search(pat2,string,re.i)

print(rst1)

print(rst2)

5、貪婪模式與懶惰模式

貪婪模式就是盡可能多的去匹配                              懶惰模式是盡可能少的去匹配

import re

pat1="p.*y"#貪婪模式

pat2="p.*?y"#懶惰模式

string="dgdfdskdjasgpyddadadythonhykloe"

rst1=re.search(pat1,string)

rst2=re.search(pat2,string)

print(rst1)

print(rst2)

<_sre.sre_matchobject; span=(12, 27), match='pyddadadythonhy'>

<_sre.sre_matchobject; span=(12, 14), match='py'>

6、正規表示式函式

正規表示式函式有:

re.match()函式  從字串頭開始匹配,如果字串首字母不匹配 直接返回none  

re.search()在給定字串從左向右進行搜尋   只能給出乙個結果

re.sub()函式

全域性匹配函式:

re.compile(pat).findall(string)

7、常見正則匹配例項

匹配.com  或 .cn**   匹配**號碼

import re

pat1="[a-za-z]+://[^\s]*[.com|.cn]"

string='hadah'

rst1=re.compile(pat1).findall(string)

print(rst1)

8、爬取csdn的乙個課程 ,並自動提取出qq群

import re

importurllib.request

data=urllib.request.urlopen("").read()

rst1=re.compile(pat).findall(str(data))

print(rst1)

9、提取出版社資訊

網路爬蟲(8) 正規表示式

w 匹配字母數字及下劃線 w 匹配f非字母數字下劃線 s 匹配任意空白字元,等價於 t n r f s 匹配任意非空字元 d 匹配任意數字 d 匹配任意非數字 a 匹配字串開始 z 匹配字串結束,如果存在換行,只匹配換行前的結束字串 z 匹配字串結束 g 匹配最後匹配完成的位置 n 匹配乙個換行符 ...

爬蟲 正規表示式

正規表示式 regular expression 是一種字串匹配的模式 pattern 它可以檢查乙個字串是否含有某種子串 替換匹配的子串 提取某個字串中匹配的子串。匯入正則模組 importre 字元匹配 rs re.findall abc adc print rs rs re.findall a...

python爬蟲之正規表示式

search函式 import re re庫 pattern re.compile r worlda compile編譯生成可操作物件 m re.search pattern,hello world search的結果有一些屬性,其 中group 返回 如果查詢成功,則返回匹配的段落 if m pr...