Python爬虫:re解析

Python爬虫:re解析

数据解析

数据解析的三种方式

  1. re解析
  2. bs4解析
  3. xpath解析

re解析

re:regular expression,正则表达式,一种使用表达式的方式对字符串进行匹配的语法规则。抓取的页面源代码本质是一个很长的字符串,因此可以用正则表达式。

元字符:具有固定含义的特殊字符,默认只匹配一个字符串。

常见的元字符:

元字符含义
.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线
\s匹配任意的空白符
\d匹配数字
\t匹配一个制表符
^匹配字符串的开始
$匹配字符串的结尾
\W匹配非字母或数字或下划线
\D匹配非数字
\S匹配非空白符
a\b匹配字符a或字符b
()匹配括号内的表达式,也表示一个组
[…]匹配字符组中的字符
[^…]匹配除了字符组中的所有字符

量词:用来控制元字符出现的次数

量词含义
*重复零次或更多次
+重复一次或更多次
重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n次到m次

贪婪匹配和惰性匹配

字符类型含义
.*贪婪匹配尽可能多得匹配
.*?惰性匹配尽可能少得匹配

python的re模块

1.findall用于匹配字符串中所有的符合正则的内容

import re
lst = re.findall(r"\d+","我的电话是:10086,你的电话是:10088")
print(lst)

结果:

['10086', '10088']

2.finditer匹配字符串中所有的内容,返回的是迭代器,从迭代器中拿到内容需要.group()

import re
it = re.finditer(r"\d+","我的电话是:10086,你的电话是:10088")
for i in it :
    print(i.group())

结果:

10086
10010

3.search返回的是match对象,找到一个结果就返回,拿数据需要.group()

import re
s = re.search(r"\d+","我的电话是:10086,你的电话是:10088")
print(s.group())

结果:

10086

4.match是从头开始匹配

import re
s = re.match(r"\d+","我的电话是:10086,你的电话是:10088")
print(s.group())

s = re.match(r"\d+","10086,你的电话是:10088")
print(s.group())

结果:

第一个报错:nonetype

第二个:10086

5.预加载正则表达式

import re
obj = re.compile(r"\d+")

it = obj.finditer("我的电话是:10086,你的电话是:10088")
for i in it :
    print(i.group())

结果:

10086
10088

6.单独获取正则中的内容

(?P<分组名字>正则)进一步提取正则中的内容

import re
s = """
<div class='jay'><span id='1'>周杰伦</span></div>
<div class='jj'><span id='2'>林俊杰</span></div>
<div class='jolin'><span id='3'>蔡依林</span></div>
"""
#re.S:让.能匹配换行符
obj = re.compile(r"<div class='.*?'><span id='(?P<id>\d)+'>(?P<singer>.*?)</span></div>",re.S)

result = obj.finditer(s)
for it in result:
    print(it.group("singer"))
    print(it.group("id"))

结果:

周杰伦
1
林俊杰
2
蔡依林
3
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值