python爬虫之正则表达式基础

正则表达式

python爬虫离不开正则表达式,如果说爬虫是在数据海洋收集数据的大船,那么正则就是给这艘船指明了到哪里采集数据和采集什么养的数据,筛选和过滤掉我们不想要的数据以节省爬虫的资源提高爬取效率

字符匹配有普通字符和元字符
首先要导入re模块‘
普通字符匹配::re.findall(' kehao','cheniahfh kehaojkshs') #使用findall方法匹配字符串,’kehao‘就是要提取的数据,后面的就是要处理的数据

元字符匹配: . ^ $ * + ? {} [] | \
元字符 . 可以匹配除 "\ / "以外的任何字符,但仅限一个字符
^ 匹配开头字符串,如果开头不是就匹配不到
$ 匹配结尾,如果结尾不是就匹配不到
* 可以匹配0到多个字符
+ 可以匹配1到多个字符
? 可以匹配0到1个字符,超过一个就匹配不到了
{} 可以匹配任意多个字符
[] 方法很多
re.findall('k[db]a','kda') #类似或的关系,中括号里任意一个满足就可以匹配的字符
re.findall('k[a-z]a','kfa') # a到在的任何字符都可以匹配
re.findall('k[a-z]+a','kfdisea') # 加上通匹配付就可以匹配任意长度字符
re.findall('k[1-9]a','k5a') #匹配数字
re.findall('k[^f]a','kda') #非,只要不是f的任何字符都可以匹配
re.findall('k[\d]a','k4a') #匹配任意数字
注意在括号内上面的那些元字符都不代表原意义,比如*,在里面就是个普通*,可以被匹配到的
\ 功能1..在上面那些元字符后面加上反斜杠,就是取消元字符功能的意思
功能2 .在反斜杠后面加上一些普通字符,那普通字符就会有一些特殊意
\d 匹配任何十进制数:它相当于类[0-9]
\D 匹配任何非数字字符:它相当于类 [^0-9]
\s 匹配任何空白字符 : 它相当于类 [\t\n\r\f\v]
\S 匹配任何非空白字符:它相当于类 [^\t\n\r\f\v\]
\w 匹配任何字母数字字符:它相当于类 [a-zA-Z0-9_]
\W 匹配任何非字母字符: 它相当于类 [^a-zA-Z0-9_]
\b 匹配一个单词边界,也就是指单词和空格间的位置。
匹配单词边界(包括开始和结束),这里的“单词”,是指连续的字母、数字和下划线组成的字符串。
注意:\b的定义是\w和\W的交界
这是个零宽界定符(zero-widih assertions)只用以匹配单词的词首和词尾。
单词被定义为一个字母数字序列,因此词尾就是用空白符或非字母数字符来标示

模式修正
在不改变正则表达式的前提下,通过模式修正改变正则表达式含义
常见的修正符
I 匹配时可以忽略大小写
M 多行匹配
L 做本地化识别匹配
U 根据Unicode字符及解析字符
S 让 .匹配包括换行符,即用了该模式修正后,‘.’匹配就可以匹配任意的字符了
这里重点说一下这个S,在匹配换行符的时候,如果不用这个修正符,用[\s\S]或者其他也可以匹配,但是都不是很完美和方便,而且网页数据有大量的换行符,所以这个修正符还是很常用的
import urllib.request
import re
url='https://mp.weixin.qq.com/s?src=11×tamp=1510194503&ver=503&signature=RWTvFb8elq6LXYNLcCmUYLQyVXWcpEXeOvJds64GWomDl8158DOW4WE0Zn-0umdZkEiuk4AEM*b6aLx3aheT6lvozOaUwGxH*9rTBvnr5TZXkKLlmbxTkVvHe9FH3x07&new=1'
data=urllib.request.urlopen(url).read().decode('utf-8')
pat='id="js_content">(.*?)id="js_sg_bar">
data1=re.compile(pat,re.S).findall(data)#用模式修正后,.j就可以匹配包括换行符在内的任意字符了
f=open('F:/uuuu/2.txt','w')
f.write(data1[0])
f.close




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值