常用正则表达式
如果没猜错的话当大家看了我写的python爬虫系列二的话我想你们心中一定有千万匹马儿跑过,其实我想说的是关于上篇表达式的内容你们只需要了解一下即可因为上篇主要是为了引入一些概念来解释爬虫爬的到底是啥,感受感受。那么接下来我就来介绍一些常用的内容
\w 匹配字母数字及下划线
\W 匹配非字母数字及下划线
\s 匹配任意空白字符,等价于 [\t\n\r\f].
\S 匹配任意非空字符
\d 匹配任意数字,等价于 [0-9].
\D 匹配任意非数字
re.I 忽略大小写
re.M 多行模式
re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
集字符[ ]
* 表示一个元素可出现0或多次
+表示出现一次或多次
?非贪婪模式
( )子模式
{ }一个元素或模式出现{m,n}m到n次,n可以不写为至少几次{m,}
实战演练
字符串python
import
re
string
=
'python'
#我们匹配出python
path
=
re
.
compile
(
'p\w\w\w\wn'
,
re
.
I
)
path
.
findall
(
string
)
#这里和re.findall(path,string)是一样的
这里我们用了\w来匹配。接下来我集字符和*
import
re
string
=
'python'
#我们匹配出python
path
=
re
.
compile
(
'p
[
y
-
z
]
*
thon
,
re
.
I
)
path
.
findall
(
string
)
也可以这样`
import
re
string
=
'python'
#我们匹配出python
path
=
re
.
compile
(
'p.*'
,
re
.
I
)
path
.
findall
(
string
)
或者
import
re
string
=
'python'
#我们匹配出python
path
=
re
.
compile
(
'py
{
0
,
1
}
.
*
,
re
.
I
)
path
.
findall
(
string
)
接下来是贪婪模式和非贪婪模式(默认贪婪)
string= pythonnn
import
re
string
=
'pythonnn'
#我们匹配出python
path
=
re
.
compile
(
'p
.
*
n
,
re
.
I
)
path
.
findall
(
string
)
你会发现你匹配的是pythonnn
所以我们加个?
import
re
string
=
'python'
#我们匹配出python
path
=
re
.
compile
(
'p
.
*
?n
,
re
.
I
)
path
.
findall
(
string
)
最后请出我们的()
这个是什么呢,演示一下
import
re
string
=
'python'
#我们匹配出ython
path
=
re
.
compile
(
'p(.*)'
,
re
.
I
)
path
.
findall
(
string
)
#改一下又是什么呢我们匹配thon
path
=
re
.
compile
(
'y(.*)'
,
re
.
I
)
path
.
findall
(
string
)
结果我想你已经猜到了吧?来慢慢想一下敲一下。那么常用的基本上就这样上一篇不要求你一定要记下来但是这一篇如果你想要成为高手,最好记住!!!
这里还要强调一个点那就是匹配特殊元素比如www.python.ory中.可以表示任意元素所以它可以和wwwxpythonmory匹配所以要对其转义但是要加\ \转义即 :www\\.python\\.ory或者r’www\.python\.ory’或者直接用re.escape()方法
自动搜索爬虫
看名字你可能觉得好高大上好像不是我等可以接触的,其实不然。现在打开你的浏览器
输入如下内容/s wd=python
猜到什么了么!!下篇继续(介绍实战完urllib.request再来解析库和request不要着急慢慢来)
日常名言结束: 经验显示,成功多因于赤忱,而少出于能力。胜利者就是把自己身体和灵魂都献给工作的人。—— 查尔斯·巴克斯顿