博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式(Regular Expression)
阅读量:5291 次
发布时间:2019-06-14

本文共 1230 字,大约阅读时间需要 4 分钟。

以下摘录了爬虫经常用的正则表达式,如需更详细的信息,请查看崔庆才的个人网页: 。

 

使用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

 

爬虫常用正则表达式符号以及描述:

模式

描述

\n

匹配一个换行符

^

匹配一行字符串的开头

$

匹配一行字符串的结尾

.

匹配任意字符,除了换行符

*

匹配0个或多个表达式

?

匹配0个或1个前面的正则表达式定义的片段,非贪婪方式

( )

匹配括号内的表达式

 

贪婪匹配与非贪婪匹配:

.*   --- 贪婪匹配(匹配尽可能多的字符)

.*?   --- 非贪婪匹配(匹配尽可能少的字符)

 

常用修饰符:

re.S     ---   匹配包括换行符在内的所有字符

re.I     ---   使匹配对大小写不敏感

 

转义字符:

\' 单引号
\" 双引号
\\ 反斜杠

作用:

1,将普通字符转为特殊用途,一般用于表示不能直接显示的字符,比如后退键,回车键等

2,将特殊意义的字符转换回它原来的意义,比如在一对双引号里面还想使用双引号,那么就只能使用转义字符了

 

在爬取网页后,我们需要抽取自己所需的信息,这时就要根据规律定义合适的正则表达式。通常的做法是:首先找到定位节点(通常可以使用class属性),然后使用非贪婪匹配匹配其他不相关的字符,用括号把自己所需的信息包围起来,最后加上re.S修饰符(因为HTML文本里包含换行符,不加此修饰符就无法匹配换行后的文本)。

 

比如一文中的一个例子:

 

上映时间,在一个p节点下面,class为"releasetime":

上映时间:1993-01-01

相应的正则表达式可以写为:.*?releasetime.*?>(.*?)</p>

 

这样就可以把"上映时间:1993-01-01"抽取出来。

 

转载于:https://www.cnblogs.com/HuZihu/p/10219908.html

你可能感兴趣的文章
wireshark 无法抓取本地数据包
查看>>
sql 知道年龄 数据库里面只有身份证 查询条件为这个年龄的所有数据
查看>>
android 高德地图出现【定位失败key鉴权失败】
查看>>
如何使用mybatis插入数据之前就具生成id值
查看>>
算法笔记--基础数学知识
查看>>
Extjs Dom
查看>>
初始化linux部署tomcat
查看>>
Predictive Analytics for Business
查看>>
Python中常用的模块(OS模块)
查看>>
Why should a self-implemented getter retain and autorelease the returned object
查看>>
altera小实验——第一个demo指导书
查看>>
强化学习1
查看>>
NSArray的sorting排序
查看>>
docker建立和共享文件(服务器和docker之间的共享)
查看>>
全文检索技术---solr
查看>>
动态内存分配(Dynamic memory allocation)
查看>>
Java学习 第三章 java基础(一)
查看>>
C#网络编程数据传输中封装数据帧头的方法
查看>>
第一份offer
查看>>
RNN Train和Test Mismatch
查看>>