栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

逆向爬虫02 re模块

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

逆向爬虫02 re模块

python re模块 re是python中自带的正则表达式模块,可以用于正则匹配

1. findall() 将匹配到的所有结果塞进列表并返回

import re
# 匹配字符串中的所有字符'a'
result = re.findall("a", "我是一个abcdefag")
print(result)	# ['a', 'a']

# 匹配字符串中的所有数字
result = re.findall(r"d+", "我今年18岁,我有2000块")	# 因为反斜杠''在字符串中会被当做转移功能,所以要在字符串前面加r
print(result)	# ['18', '2000']

2. finditer() 将匹配到的所有结果塞进迭代器并返回,迭代器中存放的是match对象,需要调用.group()获取匹配结果,迭代器可以优化程序性能,当能匹配到多个对象是,优先使用finditer()

import re
# 匹配字符串中的所有数字
result = re.finditer(r"d+", "我今年18岁,我有2000块")
print(result)	# 
for item in result:
    print(item) #  
    print(item.group())	# 18, 2000

3. search() 它只返回一个match对象,该对象是finditer()匹配到的第一个对象

import re

result = re.search(r"d+", "我叫周杰伦,今年32岁,我的班级是3年2班")
print(result.group())	# 32

4. match() 它只返回一个match对象,不同的是match相当于在正则匹配表达式前加上了’^’,即只从字符串开头匹配

import re

result = re.match(r"d+", "9527,我的编号是9527")		# 正则表达式相当于是r"^d+"
print(result.group())	# 9527

5. compile() 预加载正则表达式,相当于将正则表达式存储到一个变量中,方便后面调用,而不需要每次都申请内存

import re

obj = re.compile(r"d+")
result = obj.findall("我叫周杰伦,今年32岁,我的班级是3年2班")
print(result)	# ['32', '3', '2']

6. 如何从正则中提取到我们想要的数据

# 将想要提取的数据用小括号括起来,可以单独取名字
# (?P<名字>正则)
# 提取数据的时候,需要group("名字")
import re

s = """
    中国联通
    中国移动
"""
# 想要获取上述字符串中的id和text信息
obj = re.compile(r"d+)'>(?P.*?)")
result = obj.finditer(s)
for item in result:
    id = item.group("id")
    name = item.group("name")
    print(id, name)	# 10010 中国联通	10086 中国移动
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675347.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号