python爬虫第二章基础-(正则表达初步学习)

这次是用正则表达式抓取re信息,固定匹配含有特殊意义的符号。

下面是一些基础的元字符和匹配的相关信息

\w匹配数字字母和下划线
\s匹配任意换行符
\d匹配任意数字
\n匹配换行符
\t匹配制表符
\W匹配非数字字母和下划线
\D匹配非数字
import re
#findall 匹配字符串所有的符合正则的内容
lst = re.findall(r"\d+",'我的电话是:10086,我同学号码是:10010')
print(lst)  #['10086', '10010']

#finditer :匹配字符串所有内容【返回的是迭代器】
it = re.finditer(r'\d+','我的电话是:10086,我同学号码是:10010')
for i in it:
    print(i.group())  #从迭代器中拿数值的函数group  #10086
#search 找到一个结果就返回,返回的是match对象,拿数据得用group()    
s = re.search(r'\d+','我的电话是:10086,我同学号码是:10010')
print(s.group())   #10010
#match 从头开始匹配,
m = re.match(r'\d+','我的电话是:10086,我同学号码是:10010')
#print(m.group())  #10086

#预加载正则,
obj = re.compile(r'\d+')

ret = obj.finditer('我的电话是:10086,我同学电话是:10010')

for it in ret:
    print(it.group())
ret = obj.findall('呵呵哒,我就不信你不换我100000000000')
print(ret)  #['100000000000']

剩下的量词是需要重点了解的,也不多

量词:* 重复零次或者很多次   .*  贪婪匹配      .*?惰性匹配

贪婪匹配顾名思义:筛选整个需要筛选的信息,匹配到最后一次出现关键信息的位置事例

obj = re.compile('.*游戏')
test = "你昨天玩的什么游戏,我也想来玩游戏,可是大部分的游戏我都不会。"
print(obj.finditer(test))

#你昨天玩的什么游戏,我也想来玩游戏,可是大部分的

惰性匹配也叫非贪婪匹配,在于先完全遍历整个信息,然后回溯到最先发现的地方进行匹配。

obj = re.compile('.*游戏')
test = "你昨天玩的什么游戏,我也想来玩游戏,可是大部分的游戏我都不会。"
print(obj.finditer(test))

#你昨天玩的什么游戏

就是正则表达式的一些基本内容。

s = '''
<div class='fa'><span id='1'>贝多芬</span></div>
<div class='fsg'><span id='2'>都是</span></div>
<div class='dgd'><span id='3'>好的好地方</span></div>
<div class='sgh'><span id='4'>告诉各位</span></div>
<div class='nvx'><span id='5'>发光</span></div>

'''
obj = re.compile(r"<div class='(?P<id>.*?)'><span id='\d+'>(?P<asa>.*?)</span></div>",re.S)  #re.S 让.能匹配换行符
result = obj.finditer(s)
for i in result:
    print(i.group('asa'))
    print(i.group('id'))

'''贝多芬
fa
都是
fsg
好的好地方
dgd
告诉各位
sgh
发光
nvx'''

这是正则表达式的使用发放,在一段你想要寻找的内容中找到限定的地方, 然后选取用(?P<标记字符>.*?)来标记,紧接着在下面需要输出的时候用i.group(’限制字符‘)输出即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值