『python爬虫』06. 数据解析之re正则解析(保姆级图文)

这篇具有很好参考价值的文章主要介绍了『python爬虫』06. 数据解析之re正则解析(保姆级图文)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中

1. 什么是re解析

Regular Expression, 正则表达式, ⼀种使⽤表达式的⽅式对字符串,进⾏匹配的语法规则(按照一定规则的查找)

⽹⻚源代码本质上就是⼀个超⻓的字符串, 用正则就好像是在我们的txt中查找指定内容一样。

正则的优点:速度快, 效率⾼, 准确性⾼
正则的缺点:难度⾼


2. 正则规则

元字符

元字符: 具有固定含义的特殊符号 常⽤元字符

1	.   匹配除换⾏符以外的任意字符
2	\w	匹配字⺟或数字或下划线
3	\s	匹配任意的空⽩符
4	\d	匹配数字
 
5	\n	匹配⼀个换⾏符
6	\t	匹配⼀个制表符
7		
8	^	匹配字符串的开始
9	$	匹配字符串的结尾
10		
11	\W	匹配⾮字⺟或数字或下划线
12	\D	匹配⾮数字
13	\S	匹配⾮空⽩符
14	a|b	匹配字符a或字符b
15	()	匹配括号内的表达式,也表示⼀个组
16	[...]	匹配字符组中的字符
17	[^...]	匹配除了字符组中字符的所有字符

量词

1	*	重复零次或更多次
2	+	重复⼀次或更多次
3	?	重复零次或⼀次
4	{n}	重复n次
5	{n,}	重复n次或更多次
6	{n,m}	重复n到m次

匹配模式测试

符号 意义
.* 惰性匹配
.*? 贪婪匹配

爬⾍⽤的最多的就是这个惰性匹配.,就是尽可能减少所搜索到的目标(搜索会更加精确,用到了回溯的思想)


3. 正则案例

正则在线测试网站:https://tool.oschina.net/regex/

  • 案例1:

待匹配文本:

惰性正则匹配,123456匹配

匹配规则匹配的内容–>惰性(任意一个字符)匹配

惰性.匹配

『python爬虫』06. 数据解析之re正则解析(保姆级图文)

  • 案例2
    待匹配文本:
惰性正则匹配,123456匹配

匹配规则匹配的内容–>惰性(任意多个个字符)匹配

惰性.*匹配

『python爬虫』06. 数据解析之re正则解析(保姆级图文)

  • 案例3
    待匹配文本:
惰性正则匹配,123456匹配

匹配规则匹配的内容–>惰性(任意多个个字符)匹配,要求找到最小范围的匹配项

惰性.*?匹配

原理在于第一步找到了案例2中的 惰性正则匹配,123456匹配字符串之后继续对这个字符串回溯,查看这个字符串中是否能够再找到更小单位的匹配对象,只返回最小长度的匹配对象。
『python爬虫』06. 数据解析之re正则解析(保姆级图文)


4. re模块的使用

匹配规则解释: “\d” 表示匹配数字 “+” 表示1个或多个

4.1 findall: 匹配字符串中所有的符合正则的内容

返回值是列表

import re

lst = re.findall(r"\d+", "我的电话号是:10086, 我女朋友的电话是:10010")
# 也就是匹配所有数字串
print(lst)

『python爬虫』06. 数据解析之re正则解析(保姆级图文)

4.2 finditer: 匹配字符串中所有的内容[返回的是迭代器]

从迭代器中拿到内容需要.group()

import re

it = re.finditer(r"\d+", "我的电话号是:10086, 我女朋友的电话是:10010")
for i in it:#迭代器for循环输出
    print(i.group())

『python爬虫』06. 数据解析之re正则解析(保姆级图文)

4.3 search, 找到一个结果就返回, 返回的结果是match对象

拿数据需要.group(),匹配失败返回None

import re

s = re.search(r"\d+", "我的电话号是:10086, 我女朋友的电话是:10010")
print(s.group())

『python爬虫』06. 数据解析之re正则解析(保姆级图文)

4.4 match 从头开始匹配,必须把10086放在待匹配的字符串开头才能匹配成功

真正意义上的从头开始,从待匹配文本的0位字符开始匹配,一般用的不多,功能不如search强大。

import re

s = re.match(r"\d+", "10086, 我女朋友的电话是:10010")
print(s.group())#10086

s = re.match(r"\d+", "我女朋友的电话是:10010,10086")
print(s)#None

『python爬虫』06. 数据解析之re正则解析(保姆级图文)

4.5 compile 预加载正则表达式

预先定义一个正则的对象,后面只需要调用对象的方法就好了,不用每次都写一遍正则表达式,节省资源,提高效率

import re

# 预加载正则表达式
obj = re.compile(r"\d+")
#预先定义一个正则的对象,后面只需要调用对象的方法就好了,
# 不用每次都写一遍正则表达式,节省资源,提高效率

ret = obj.finditer("qwer233qwer566")
for it in ret:
    print(it.group())

ret = obj.findall("qwer233qwer899")
print(ret)

4.6 (?P<变量名>匹配规则)

(?P<变量名>匹配规则) 表示把符合这个匹配规则的内容存入对应变量名

import re
obj = re.compile(r"(?P<number>\d+)")# number的值就是匹配得到的数字
ret = obj.finditer("qwer233qwer566")
for it in ret:
    print(it.group("number"))


5. 综合实战

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>
<div class='sylar'><span id='4'>范思哲</span></div>
<div class='tory'><span id='5'>胡说八道</span></div>
"""

# (?P<分组名字>正则) 可以单独从正则匹配的内容中进一步提取内容
obj = re.compile(r"<div class='.*?'><span id='(?P<id>\d+)'>(?P<name>.*?)</span></div>", re.S)  # re.S: 让.能匹配换行符

result = obj.finditer(s)
for it in result:
    print(it.group("id")+"->"+it.group("name"))

『python爬虫』06. 数据解析之re正则解析(保姆级图文)


总结

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2023 mzh

Crated:2023-3-1

欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中
『未完待续』文章来源地址https://www.toymoban.com/news/detail-434356.html


到了这里,关于『python爬虫』06. 数据解析之re正则解析(保姆级图文)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 『python爬虫』05. requests模块入门(保姆级图文)

    欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 由此可知,我们的请求方式是post,请求url是post的地址 https://fanyi.baidu.com/sug 观察一下我们的formdata,在我们逐渐输入apple的过程中,分别post请求,带有kw参数为“a” “ap” “app” “appl”

    2024年02月02日
    浏览(33)
  • 『python爬虫』23. selenium之窗口切换与iframe(保姆级图文)

    欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 窗口句柄的定义:WebDriver对象有window_handles 属性,是列表对象, 里面包括了当前浏览器里面 所有的窗口句柄,即每个窗口对应唯一ID。通过窗口句柄判断窗口一一对应。 web = Chrome() #新建驱

    2024年02月05日
    浏览(27)
  • 『python爬虫』github仓库存放脚本结合青龙面板使用(保姆级图文)

    欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 订阅或是直接添加任务 名称随意输入,链接是我们的仓库地址+ .git ,定时规则 0 0 7 * * ? 表示每天7点更新一次,也可以自己设置. 添加订阅后运行发现如果没有添加脚本,请检查你的配置,是否接

    2024年04月26日
    浏览(28)
  • 『pyqt5 从0基础开始项目实战』06. 获取选中多行table 重新初始化数据(保姆级图文)

    欢迎关注 『pyqt5 从0基础开始项目实战』 专栏,持续更新中 欢迎关注 『pyqt5 从0基础开始项目实战』 专栏,持续更新中 请查阅上文获取源码,此处只列举第三方库 新增点击事件 .clicked.connect 我们这里的处理也包括包括选中多行的情况 在主函数中给线程传入需要的参数 获取

    2023年04月16日
    浏览(30)
  • 『python爬虫』24. selenium之无头浏览器-后台静默运行(保姆级图文)

    欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 一般性的selenium会打开浏览器页面,展示图形化页面给我们看,我们都应该知道命令行式的程序肯定比这种渲染图形化界面的程序快速高效。为了一定程度上缓解selenium慢的问题,我们可以采

    2024年02月07日
    浏览(64)
  • python爬虫之正则表达式解析实战

    先获取网址,URL:https://www.xiachufang.com/category/40076/ 定位想要爬取的内容 使用正则表达式爬取 导入模块 指定URL UA伪装(模拟浏览器) 发起请求,获取当前页面的数据内容,并使用通用爬虫爬取整个页面 编译正则表达式(提取想要的内容) 解析请求内容 指定图片存储路径 持

    2024年02月08日
    浏览(30)
  • 【网络安全带你练爬虫-100练】第10练:re的正则匹配、文件夹创建、图片下载

    目录 一、目标1:正则匹配图片的URL 二、目标2:创建文件夹 三、目标3:保存图片到test文件夹中  四、网络安全小圈子 URL位置 我们可以找到img都在这个标签里面     请求方法GET   提取URL位置 需要掌握的 目标标签如下: 需要提取的内容如下: (多加了一个为转义字

    2024年02月13日
    浏览(29)
  • python re 模块 正则表达式

    ^ 表示匹配字符串的开始位置 (例外 用在中括号中[ ] 时,可以理解为取反,表示不匹配括号中字符串) $ 表示匹配字符串的结束位置 * 表示匹配 零次到多次(记忆方法: 符号是星星,天上的星星可以是无数个也可以看不到 ) + 表示匹配 一次到多次 (记忆方法: 符号是加号,增加

    2024年02月13日
    浏览(31)
  • Python高级教程(1)——正则表达式(re.match、re.search、re.sub、compile、findall、finditer、split)、正则表达式对象、正则表达式实例

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 (1)re.match函数 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 none。 函数语法: 通过re.match匹配成功,可以使⽤group⽅法来提取数据

    2024年02月04日
    浏览(45)
  • Python 正则表达式RE知识学习

    正则表达式(Regular Expression)是一种强大的文本模式匹配工具,常用于在字符串中查找、替换、分割等操作。在 Python 中,可以使用内置的 re 模块来操作正则表达式。 字符匹配: 普通字符:正则表达式中的普通字符(如字母、数字、特殊字符)与字符串中的对应字符进行匹

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包