正则表达式结合re模块,获取网页中的内容

        我们利用requests模块获取到了是整个网页的数据,我们需要对原始数据进行处理,得到我们想要的内容,这个时候我们可以利用re模块,结合正则表达式来获取。

"""
re模块:
如何用re模块和正则表达式获取我们需要的数据呢?
1、findall查找所有,返回列表(不常用)
2、finditer:和findall差不多,不过它返回的是迭代器(常用)
3、search:匹配到的是第一个结果(后面不在匹配);如果匹配不上,返回的是None
4、match:只能从字符串的开头进行匹配
5、compile:可以将一个很长的正则表达式进行预加载,方便后面调用
6、单独获取正则中我们需要的内容(给分组起名字) (重点)

"""

import re

#findall:匹配字符串中所有符合正则的内容(返回的是列表)
lst = re.findall('\d+','我的电话是:10086,他的电话是10010')
print(lst)

#finditer:匹配字符串中所有符合正则的内容(返回的是迭代器);从迭代器拿到内容用.group()
it = re.finditer(r'\d+','我的电话是:10086,他的电话是10010')  #加一个r,就不会有波浪线提醒了
print(it)
for i in it:
    print(i.group())

#search返回的结果是match对象,拿数据需要.group()
s=re.search(r'\d+','我的电话是:10086,他的电话是10010')
print(s.group())
print(s.group())
#以上输出都是10086 (检索存在,后面就不在检索了)


#match是从头开始匹配
# s=re.match(r'\d+','我的电话是:10086,他的电话是10010')
# print(s.group())  #报错
s=re.match(r'\d+','10086,他的电话是10010')  #10086前面不加任何字符
print(s.group())   #返回10086

print('-------------------------------')

#compile:预加载正则表达式(特别是正则很长的时候,代码便于阅读,更美观)
obj = re.compile(r'\d+')

ret = obj.finditer('10086,他的电话是10010')
print(ret)  #迭代器
for it in ret:
    print(it.group())

ret = obj.findall('10086,他的电话是10010')
print(ret)  #列表

print('运用-------------------------')
s= """
<div class='周杰伦'><span id='1'>满城尽带黄金甲</span></div>
<div class='周星驰'><span id='2'>大话西游</span></div>
<div class='吴京'><span id='3'>战狼</span></div>
<div class='成龙'><span id='4'>宝贝计划</span></div>
"""
#获取数据格式:(?P<分组名字>正则)
# obj=re.compile("<div class='.*?'><span id='.*?'>.*?</span></div>")
obj=re.compile("<div class='.*?'><span id='(?P<id>.*?)'>(?P<movie_name>.*?)</span></div>",re.S) #re.S (让. 可以匹配换行,避免中间断了)
ret = obj.finditer(s)
for it in ret:
    # print(it.group("id"))
    print(it.group("movie_name"))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值