Python_爬虫系列_3.Re(正则表达式)

Python_爬虫系列文章目录

Python_爬虫系列_1.BeautifulSoup

Python_爬虫系列_2.XPath

Python_爬虫系列_3.Re(正则表达式)

Python_爬虫系列_4.Numpy库的学习

Python_爬虫系列_5.Pandas,Matplotlib,Pyecharts和Echarts

Python_爬虫系列_10.综合案例


前言

毋庸置疑,regex的重要性,不言而喻,那里都是需要用到他的,那就让我们开始吧


一、Re是什么?

正则表达式是用来简洁表达一组字符串的表达式
正则表达式是一种针对字符串表达“简洁”和“特征”思想的工具
正则表达式可以用来判断某字符串的特征归

二、Re的语法

正则表达式语法由字符和操作符构成

1,常用操作符

操作符
操作符

2,实例

在这里插入图片描述

在这里插入图片描述

3,python的Re库

在这里插入图片描述

  • re.search(pattern, string, flags=0) ∙ pattern : 正则表达式的字符串或原生字符串表示 ∙
    string : 待匹配字符串 ∙ flags : 正则表达式使用时的控制标记 在一个字符串中搜索匹配正则表达式的第一个位置
    返回match对象
    在这里插入图片描述
    在这里插入图片描述
  • re.match(pattern, string, flags=0) ∙ pattern : 正则表达式的字符串或原生字符串表示 ∙
    string : 待匹配字符串 ∙ flags : 正则表达式使用时的控制标记 从一个字符串的开始位置起匹配正则表达式
    返回match对象

    在这里插入图片描述
  • re.findall(pattern, string, flags=0) ∙ pattern : 正则表达式的字符串或原生字符串表示 ∙
    string : 待匹配字符串 ∙ flags : 正则表达式使用时的控制标记 搜索字符串,以列表类型返回全部能匹配的子串

在这里插入图片描述

  • re.split(pattern, string, maxsplit=0, flags=0) ∙ pattern :
    正则表达式的字符串或原生字符串表示 ∙ string : 待匹配字符串 ∙ maxsplit: 最大分割数,剩余部分作为最后一个元素输出
    ∙ flags : 正则表达式使用时的控制标记 将一个字符串按照正则表达式匹配结果进行分割 返回列表类型

在这里插入图片描述

  • re.finditer(pattern, string, flags=0) ∙ pattern : 正则表达式的字符串或原生字符串表示 ∙
    string : 待匹配字符串 ∙ flags : 正则表达式使用时的控制标记 搜索字符串,返回一个匹配结果的迭代类型,每个迭代
    元素是match对象

在这里插入图片描述

  • re.sub(pattern, repl, string, count=0, flags=0) ∙ pattern :
    正则表达式的字符串或原生字符串表示 ∙ repl : 替换匹配字符串的字符串 ∙ string : 待匹配字符串 ∙ count :
    匹配的最大替换次数 ∙ flags : 正则表达式使用时的控制标记 在一个字符串中替换所有匹配正则表达式的子串 返回替换后的字符串

    在这里插入图片描述

3.另一种用法

>>> rst = re.search(r'[19]\d{5}', 'BIT 100081')
#与下面的一种等价的
>>> pat = re.compile(r'[19]\d{5}')
>>> rst = pat.search('BIT 100081')
  • regex = re.compile(pattern, flags=0) ∙ pattern : 正则表达式的字符串或原生字符串表示 ∙
    flags : 正则表达式使用时的控制标记

4.最小匹配和贪婪匹配

#贪婪匹配
>>> match = re.search(r'PY.*N', 'PYANBNCNDN')
>>> match.group(0)
'PYANBNCNDN'
#最小匹配
>>> match = re.search(r'PY.*?N', 'PYANBNCNDN')
>>> match.group(0)
'PYAN'

在这里插入图片描述

三,案例

代码如下(示例):

import requests
import re

url = 'http://www.cntour.cn/'
strhtml = requests.get(url) # get方式,获取网页数据
#print(strhtml.text)
#指定lxml解析器,将HTML文档转换成树形结构
#pattern = r'<li class="top"><a target="_blank" href="(.+)" title="(.+)">.+</a></li>'
#pattern1=r'<li class="top"><a target="_blank" href="(.+)" title="(.+)">.+</a></li>'
pattern=r'<li class=".+"><a target="_blank" href="(.+)" title="(.+)">.+</a></li>'
#<a target="_blank" href="http://www.cntour.cn/news/19059/" title="文旅部:国有景区年底实现在线预约">文旅部:国有景区年底实现在线预约</a>
data = re.findall(pattern, strhtml.text)
print(data)
# soup匹配到的有多个数
#print(len(data))
for i in data:
    print(i)
for item in data:
    href, name = item
    result = {
        'title': name, # 标题
        'link': href, # 超链接
        #'ID': re.findall('\d+', item.get('href'))
    }
    print(result)

四,总结

在这里插入图片描述

吸收,汲取,成为更好的自己

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

joyyi9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值