学习爬虫lesson2

import re
'''
lst = re.findall(r"\d+","我的电话:10086,我妈电话是11086")
#findall:匹配字符串中所以符合正则的内容
print(lst)

#finditer:匹配字符串中所有内容【返回的是迭代器】,从迭代器中拿到内容要.group()
it = re.findall(r"\d+","我的电话:10086,我妈电话是11086")
for i in it:
    print(i.group()) 
 
s = re.search(r"\d+","我的电话:10086,我妈电话是11086") #search返回的结果是match对象,拿数据需要.group(),找到一个结果就返回
print(s.group())

obj = re.compile(r"\d+") #只这样可以方便很多,让一个正则可以在多个地方使用
#compile可以将一个长长的正则进行预加载,方便后面的使用
ret = obj.finditer("我的·电话是10086,我妈是11086")
for it in ret:
    print(it.group())

ret = obj.fidnall("cm111111115")
print(ret)
'''

#正则中内容的单独提取
s = """
<div class='joy'><span id='1'>张若昀</span></div>
<div class='jay'><span id='2'>李沁</span></div>
<div class='juy'><span id='3'>宋轶</span></div>
"""
obj = re.compile(r"<div class='.*?'><span id='\d+'>.*?</span></div>",re.S)
#re.S让.能匹配换行符
result = obj.finditer(s)
for it in result:
    print(it.group())

这个的运行结果如下:
在这里插入图片描述
这样得到的是整体的匹配数据,但若只想得到仅含名字的数据,可以这样修改代码:

#(?P<分组名字>正则)这样就可以从正则匹配的内容中进一步提取内容
obj = re.compile(r"<div class='.*?'><span id='\d+'>(?P<suibianqu>.*?)</span></div>",re.S) #组名随便起
#re.S让.能匹配换行符
result = obj.finditer(s)
for it in result:
    print(it.group("suibianqu")) #把取得名放进来

这样就能得到只含名字的运行结果啦:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值