以下摘录了爬虫经常用的正则表达式,如需更详细的信息,请查看崔庆才的个人网页: 。
使用Python的re模块:
导入re模块:
import re
re.complie(pattern) --- 将正则字符串编译成正则表达式对象
pattern=re.compile('[a-zA-z]+://[^\s]*')
re.findall(pattern, str) --- 匹配整个字符串,返回所有匹配的对象(列表),如果没有匹配的对象则返回空列表
text="如需更详细的信息,请查看崔庆才的个人网页: https://cuiqingcai.com/5530.html"result=re.findall(pattern,text)
结果:
['https://cuiqingcai.com/5530.html']
re.sub(pattern, replacement, str) --- 替换匹配的对象
text="如需更详细的信息,请查看崔庆才的个人网页: https://cuiqingcai.com/5530.html"result=re.sub(pattern,'web',text)
结果:
如需更详细的信息,请查看崔庆才的个人网页: web
爬虫常用正则表达式符号以及描述:
模式 | 描述 |
---|---|
| 匹配一个换行符 |
| 匹配一行字符串的开头 |
| 匹配一行字符串的结尾 |
| 匹配任意字符,除了换行符 |
| 匹配0个或多个表达式 |
| 匹配0个或1个前面的正则表达式定义的片段,非贪婪方式 |
| 匹配括号内的表达式 |
贪婪匹配与非贪婪匹配:
.* --- 贪婪匹配(匹配尽可能多的字符)
.*? --- 非贪婪匹配(匹配尽可能少的字符)
常用修饰符:
re.S --- 匹配包括换行符在内的所有字符
re.I --- 使匹配对大小写不敏感
转义字符:
\' | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
作用:
1,将普通字符转为特殊用途,一般用于表示不能直接显示的字符,比如后退键,回车键等
2,将特殊意义的字符转换回它原来的意义,比如在一对双引号里面还想使用双引号,那么就只能使用转义字符了
在爬取网页后,我们需要抽取自己所需的信息,这时就要根据规律定义合适的正则表达式。通常的做法是:首先找到定位节点(通常可以使用class属性),然后使用非贪婪匹配匹配其他不相关的字符,用括号把自己所需的信息包围起来,最后加上re.S修饰符(因为HTML文本里包含换行符,不加此修饰符就无法匹配换行后的文本)。
比如一文中的一个例子:
上映时间,在一个p节点下面,class为"releasetime":
上映时间:1993-01-01
相应的正则表达式可以写为:.*?releasetime.*?>(.*?)</p>
这样就可以把"上映时间:1993-01-01"抽取出来。