Python -- 基礎爬蟲
關於爬蟲(入門)
2018/09/18
正則表示式(一種進行資料篩選的表示式)
-
原子(正則表示式最基本組成單位)
- 普通字元
字串
、非列印字元\n
、通用字元、原子表。 - 匯入正則表示式:import re
eg:result=re.search(‘yue’,‘http://www.baidu.com’) - 通用字元(萬用字元,可以匹配一系列東西):
\w
:匹配任意一個字母數字下劃線
\d
:匹配任意一個十進位制數
\s
:匹配任意一個空白字元
\W
:匹配\w相反東西(同理\D、\S)
eg:
result=re.search(’\w\dpython\w’,‘fjfj22pythond’)
print(result)
<re.Match object; span=(4, 13), match=‘22pythond’> - 普通字元
-
原子表
eg:result=re.search(‘pyth[own]n’,‘fjfj22pythwnd’)
#任意o、w、n其一即可
print(result)> print(result)
<re.Match object; span=(6, 12), match=‘pythwn’> -
元字元(正則表示式中特殊含義的字元)
^
:匹配開始位置
$
:匹配結束位置
*
:匹配大於0次、1次、多次前面的原子
?
:匹配0次、1次前面的原子(也是懶惰模式)
+
:匹配大於0次前面的原子
{}
:裡面加數字,表示前面的原子共出現多少次(包括前面的數);裡面數字n加,
數字n1+
,+數字n2
,至少n1至多n2。
|
:模式選擇符,或
()
:用於提取內容
.
:匹配除了換行符之外任意字元
-
模式修正符(不改變正則表示式的前提下,通過模式修正改變正則表示式的含義,從而實現一些匹配結果的調整等功能)
- I:忽略正則表示式大小寫
M:多行匹配
L:本地化識別匹配(這是個啥?)
U:根據unicode字元解析我們的字元
S:讓`.``也匹配換行符
eg:
result=re.search(‘python’,‘fjfj22Pythond’,re.I)
print(result)> print(result)
<re.Match object; span=(6, 12), match=‘Python’> - I:忽略正則表示式大小寫
-
貪婪模式(try more)、懶惰模式(try less)
result=re.search(‘p.n’,‘fjfj22Pythondy’,re.I)
#貪婪模式,結果Pythondy
result=re.search('p.?n’,‘fjfj22Pythondy’,re.I)
#懶惰模式,結果Py
- 正則表示式函式
- re.match():從頭搜尋,頭不匹配就沒了
result=re.search(‘p.*?n’,‘fjfj22Pythondy’,re.I)
#結果none
- re.search():任意位置搜尋,但只出一個結果
- 全域性方式
eg:
result=re.compile(‘p.*?y’).findall(‘dhpjsfhydjpfy’)
print(result)
[‘pjsfhy’, ‘pfy’]