Python爬虫之正则表达式基本用法实例分析

yizhihongxing

Python爬虫之正则表达式基本用法实例分析

正则表达式是一种强大的文本处理工具,可以用于各种文本处理,如数据清洗、文本分析、信息提取等。在Python爬虫中,正则表达式也是一种常用的工具,用于从HTML页面中提取所需的信息。本攻略将详细讲解Python爬虫中正则表达式的基本用法,包括正则表达式的语法、re模块的常用函数和示例说明。

正则表达式的语法

正则表达式是一种用于匹配字符串的模式,由普通字符和特殊字符组成。普通字符表示它本身,而特殊字符则表示一些特殊的含义。下面是一些常用的特殊字符:

  • .:匹配任意一个字符,除了行符。
  • *:匹配前面的零次或多次。
  • +:匹配前面字符一次或多次。
  • ?:匹配前面的零次或一次。
  • ^:匹配字符串开头。
  • $:匹配字符串的结尾。
  • []:匹配括号中的任意一个字符。
  • ():将括号中的内容作为一个整体进行匹配。
  • |:匹配两个或多个模式中的任意一个。

re模块的常用函数

在Python中,我们使用re模块提供的函数来操作正则表达式。下面是re模块的常用函数:

re.search()

re.search()函数用于在字符串中搜索匹配正则表达式的一个位置,并返回一个匹配对象。如果匹配成功,则返回第一个匹配对象;如果匹配失败返回None。下面是一个示例:

import re

text = 'The quick brown fox jumps over the lazy dog.'
result = re.search(r'fox', text)
print(result)  # 输出结果为<re.Match object; span=(16, 19), match='fox'>

在上面的代码中,我们使用re.search函数搜索文本中的fox,并返回一个匹配对象。运行代码后,输出结果为匹配对象的信息。

re.findall()

re.findall()函数用于搜索字符串中所有匹配正则表达式的子串,并返回一个列表。下面是一个示例:

import re

text = 'The answer is 42.'
result = re.findall(r'\d+', text)
print(result)  # 输出结果为['42']

在上面的代码,我们使用re.findall()函数搜索文本中的数字,并返回一个列表。运行代码后,输出结果为匹配到的数字。

示例说明

示例1:从HTML页面中提取所有链接

下面是一个例子,演示如何使用正则表达式从HTML页面中提取所有链接:

import re
import requests

url = 'https://www.baidu.com'
response = requests.get(url)
text = response.text
links = re.findall(r'href="(.*?)"', text)
print(links)

在上面的代码中,我们使用requests库获取百度首页的HTML页面,并使用正则表达式href="(.*?)"从页面中提取所有链接。.*?表示匹配任意字符,?表示非贪婪模式,即尽可能少地匹配。运行代码后,输出结果为所有链接的列表。

示例2:从HTML页面中提取图片链接

下面是另一个例子,演示如何使用正则表达式从HTML页面中提取所有图片链接:

import re
import requests

url = 'https://www.baidu.com'
response = requests.get(url)
text = response.text
img_links = re.findall(r'<img.*?src="(.*?)"', text)
print(img_links)

在上面的代码中,我们使用requests库获取百度首页的HTML页面,并使用正则表达式<img.*?src="(.*?)"从页面中提取所有图片链接。<img.*?表示匹配<img标签,src="(.*?)"表示匹配src属性值。运行代码后,输出结果为所有图片链接的列表。

总结

本攻略详细讲解了Python爬虫中正则表达式的基本用法,包括正则表达式的语法、re模块的常用函数和示例说明。正则表达式是一种强大的文本处理工具,熟练掌握正则表达式的用法可以大大提高工作效率。在爬虫中,正则表达式也是一种常用的工具,用于从HTML页面中提取所需的信息。我们演示了如何使用正则表达式搜索文本的数字,并将文本中的数字替换为指定的字符串,以及如何使用正则表达式搜索文本中的所有单词。希望读者可以通过这些示例更好地理解正则表达式的用法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬虫之正则表达式基本用法实例分析 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python正则表达式:难以理解结果[重复]

    【问题标题】:Python regex: having trouble understanding results [duplicate]Python正则表达式:难以理解结果[重复] 【发布时间】:2023-04-04 06:50:02 【问题描述】: 我有一个需要写入磁盘的数据框,但 pyspark 不允许任何这些字符 ,;{}()\\n\\t= 在作为镶…

    Python开发 2023年4月6日
    00
  • ROS Python msg,发送整数列表

    【问题标题】:ROS Python msg, send list of intsROS Python msg,发送整数列表 【发布时间】:2023-04-05 10:00:01 【问题描述】: 我有一个整数列表: perc = [0, 70, 85, 13, 54, 60, 67, 26] 我想把它发送到另一个 ROS 节点。我有以下 .msg 文件: #F…

    Python开发 2023年4月5日
    00
  • python hmac模块验证客户端的合法性

    Python HMAC(Hash-based Message Authentication Code)模块是用于进行消息认证的标准算法之一,可以用于验证客户端的合法性。以下是详细的攻略: 1. 理解 HMAC HMAC 算法是基于哈希函数和秘密密钥来验证消息完整性和认证消息发送者的算法。算法采用两个输入: 一个密钥(key) 一个消息(message) 然后…

    python 2023年6月2日
    00
  • Python xlwt设置excel单元格字体及格式

    下面是关于“Pythonxlwt设置excel单元格字体及格式”的详细讲解及实例教程。 设置单元格字体 要设置单元格字体,需要使用xlwt库,并且在创建workbook对象后,使用add_format()方法创建格式对象,并指定所需的字体属性。最后,使用write()方法写入内容。 import xlwt # 创建workbook对象 workbook = …

    python 2023年5月13日
    00
  • python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)

    Python微信聊天机器人改进版攻略 项目概述 本项目是使用Python实现的微信聊天机器人,可以实现根据定时或触发条件抓取天气预报、励志语录等并向好友推送的功能。 技术方案 开发环境 Python 3.x itchat:一个开源的微信个人号接口; BeautifulSoup:一个可以从HTML或XML文件中提取数据的Python库; requests:一个…

    python 2023年5月23日
    00
  • 决策树的python实现方法

    以下是关于“决策树的Python实现方法”的完整攻略: 简介 决策树是一种常用的机器学习算法,用于分类和回归问题。在本教程中,我们将介绍决策树的原理和Python实现方法,并提供两个示例。 原理 决策树是一种基于树形结构的分类模型,它通过对数据集进行划分,构建一棵树来实现分类。决策树的构建过程包括选择最优特征、划分数据集、递归构建子树等步骤。在分类时,决策树…

    python 2023年5月14日
    00
  • Python正则抓取新闻标题和链接的方法示例

    以下是“Python正则抓取新闻标题和链接的方法示例”的完整攻略: 一、问题描述 在Python中,我们可以使用正则表达式来抓取新闻标题和链接。本文将详细讲解如何使用正则表达式来抓取新闻标题和链接,并提供两个示例说明。 二、解决方案 2.1 正则表达式 在Python中,我们可以使用正则表达式来抓取新闻标题和链接。以下是一个示例,演示了如何使用正则表达式抓取…

    python 2023年5月14日
    00
  • Python合并多个Excel数据的方法

    以下是详细讲解“Python合并多个Excel数据的方法”的完整实例教程。 背景 在工作中,经常会遇到需要合并多个Excel数据的情况,手动合并往往耗时费力。而Python提供了多种方法可以用来合并多个Excel数据,本文将介绍其中一种基于pandas和openpyxl的方法。 准备工作 在开始实例之前,我们需要安装以下依赖库: pandas openpyx…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部