关于爬虫(入门)
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加,
表示至少出现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’]