要进行网络爬虫,一个绕不开的问题就是正则表达式的问题,在这篇文章里,我回顾了正则表达式的各种匹配模式,并在文章最后给出了一个小的网络爬虫案例。
主要内容:
1:正则表达式基本概念
2:python正则表达式re模块
3:正则表达式语法
4:re模块相关方法使用
为什么使用正则
疑问:字符串匹配就可以实现?
正则表达式概念:
1:使用单个字符串来描述匹配一系列符合某个语法规则的字符串
2:是对字符串操作的一种逻辑公式
3:应用场景:处理文本和数据
4:正则表达式过程:一次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;否则匹配失败。
Python第一个正则表达式
1:import re:python正则表达式模块
2:第一个正则表达式
r’ ’ Pattern Match result
import re
pa = re.compile(r‘ ’) #r的作用:我们一般需要匹配的内容里可能会 出现\n或者\t,容易出现转义,所以引入r,代表匹配的是后面引号里的原字符串
(pa即为pattern的实例)
type(pa)
_sre.SRE_Pattern
(pa有很多方法,这里主要使用其中的match方法,pa.match(str) 返回对象为匹配对(str)象或者None)
ma = pa.match(str)
ma.group()
ma.span() #匹配结果的索引位置
实例:
pa1 =re.compile(r’_’)
ma1 =pa1.match(‘_value’)
ma1.group()
‘_’
(若pa1 =re.compile(r’(_)’),则ma1.groups()可以返回(‘_’, )。否则返回()空集)
如果在匹配时需要忽略大小写的影响:
pa1 =re.compile(r’_’, re.I) ## I表示IGNORECASE忽略
python正则表达式语法(一)
匹配单个字符
python正则表达式语法(二)
匹配多个字符
python正则表达式语法(三)
边界匹配
建议以上都在python中试一遍
Python正则表达式—re模块其他方法
1:search(pattern, string, flags = 0)
在一个字符串中查找匹配
2:findall(pattern, string, flags = 0)
找到匹配,返回所有匹配部分的列表
3:sub(pattern, repl, string, count = 0, flags = 0)
将字符串中匹配正则表达式的部分替换为其他值(repl可以使字符串或者函数,如果是函数则返回函数结果)
4:split(pattern, string, maxsplit = 0, flags = 0)
根据匹配分割字符串,返回分割字符串组成的列表
Python正则表达式—练习
抓取网页中的图片到本地:
1:抓取网页
2:获取图片地址
3:抓取图片内容并保存到本地
代码如下:
文章素材及源码下载:链接:http://pan.baidu.com/s/1qYx15IO 密码:uhvh
欢迎关注交流