Python 爬虫学习笔记之正则表达式

yizhihongxing

Python爬虫学习笔记之正则表达式

正则表达式是一种用于匹配字符串的强大工具,可以在Python爬虫中用于解析HTML、XML等文本数据。本攻略将详细讲解Python中正则表达式的基本语法、常用函数和示例应用。

正则表达式基本语法

正则表达式是由普通字符和特殊字符组成的字符串,用于描述一类字符串的模式。下面是一些常用的正则表达式特殊字符:

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

下面是一个例子,演示如何使用正则表达式匹配字符串中的数字:

import re

text = 'The price is $10.99.'
pattern = r'\d+'
result = re.findall(pattern, text)
if result:
    print('Matches found:', result)
else:
    print('Matches not found')

在上面的代码中,我们使用正则表达式\d+匹配字符串中的数字。\d表示匹配一个数字字符,+表示匹配一个或多个数字字符。findall()函数可以返回所有匹配的结果。运行代码后,输出结果为Matches found: ['10', '99']

常用正则表达式函数

Python中常用的正则表达式函数包括:

  • re.search(pattern, string, flags=0):在字符串中搜索正则表达式的第一个匹配项。
  • re.match(pattern, string, flags=0):在字符串的开头匹配正则表达式。
  • re.findall(pattern, string, flags=0):在字符串中搜索正则表达式的所有匹配项。
  • re.sub(pattern, repl, string, count=0, flags=0):在字符串中搜索正则表达式的所有匹配项,并将其替换为指定的字符串。

下面是一个例子,演示如何使用正则表达式替换字符串中的空格:

import re

text = 'The quick brown fox jumps over the lazy dog.'
pattern = r'\s+'
result = re.sub(pattern, '-', text)
print(result)

在上面的代码中,我们使用正则表达式\s+匹配字符串中的空格。\s表示匹配一个空白字符,+表示匹配一个或多个空白字符。sub()函数用于在字符串中搜索正则表达式的所有匹配项,并将其替换为指定的字符串。运行代码后,输出结果为The-quick-brown-fox-jumps-over-the-lazy-dog.

示例说明

示例1:提取HTML标签中的文本内容

下面是一个例子,演示如何使用正则表达式提取HTML标签中的文本内容:

import re

text = '<h1>Welcome to my website</h1>'
pattern = r'<.*?>(.*?)</.*?>'
result = re.search(pattern, text)
if result:
    print('Match found:', result.group(1))
else:
    print('Match not found')

在上面的代码中,我们使用正则表达式<.*?>(.*?)<!--.*?-->提取HTML标签中的文本内容。<.*?>表示匹配一个或多个任意字符,.*?表示非贪婪匹配,()表示将.*?匹配到的字符串作为捕获组。search()函数用于在字符串中搜索正则表达式的第一个匹配项。运行代码后,输出结果为Match found: Welcome to my website

示例2:提取网页中的图片链接

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

import re
import requests

url = 'https://www.example.com'
response = requests.get(url)
text = response.text
pattern = r'<img.*?src="(.*?)".*?>'
result = re.findall(pattern, text)
if result:
    print('Matches found:', result)
else:
    print('Matches not found')

在上面的代码中,我们使用正则表达式<img.*?src="(.*?)".*?>提取网页中的图片链接。<img.*?>表示匹配一个或多个任意字符,src="(.*?)"表示匹配src属性值,()表示将.*?匹配到的字符串作为捕获组。findall()函数可以返回所有匹配的结果。运行代码后,输出结果为所有图片链接的具体内容。

总结

本攻略详细讲解了Python中正则表达式的基本语法、常用函数和示例应用。正则表达式是一种用于匹配字符串的强大工具,可以在Python爬虫中用于解析HTML、XML等文本数据。演示了如何使用正则表达式匹配字符串中的数字、替换字符串中的空格、提取HTML标签中的文本内容、提取网页中的图片链接。希望读者可以通过这些示例更好地理解正则表达式的应用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 爬虫学习笔记之正则表达式 - Python技术站

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

相关文章

  • python list是否包含另一个list所有元素的实例

    以下是详细讲解“Python List是否包含另一个List所有元素的实例”的完整攻略。 在Python中,可以使用多种方法判断一个List是否包含另一个List所有元素。本文将介绍两种常用的方法,并提供两个示例说明。 方法一:使用all()函数和in关键字 可以使用all()函数和in关键字的方法判断一个List是否包含另一个List所有元素。例如: ls…

    python 2023年5月13日
    00
  • 常用的正则表达式集锦

    以下是“常用的正则表达式集锦”的完整攻略: 一、问题描述 在文本处理中,正则表达式是一种非常强大的工具。本文将详细讲解常用的正则表达式集锦,并提供两个示例说明。 二、解决方案 2.1 常用的正则表达式 以下是常用的正则表达式集锦: 匹配数字:\d 匹配非数字:\D 匹配字母或数字:\w 匹配非字母或数字:\W 匹配空格:\s 匹配非空格:\S 匹配任意字符:…

    python 2023年5月14日
    00
  • 详解R 与 Python 对比区别

    R 与 Python 都是常用的数据分析工具,但它们之间有一些区别。 1. 语言结构: R 是专为统计分析设计的语言,其核心数据类型包括矩阵、向量、数组、数据框和列表。R 有丰富的内置函数和扩展包,使其适用于各种统计分析任务。 Python 是一种强大的通用编程语言,适用于各种任务,包括数据分析。Python 有更广泛的数据类型和更灵活的语言结构,例如列表、…

    python-answer 2023年3月25日
    00
  • Python 实现的 Google 批量翻译功能

    下面是Python实现的Google批量翻译功能的完整攻略。 一、实现的原理 Google翻译是一种使用人工智能算法的神经网络翻译模型,它可以将任何给定的词语或句子从一种语言翻译成另一种语言。我们可以使用Python程序调用Google翻译的API来实现批量翻译。 Python中有两个常用的库可以实现Google翻译的API调用,一个是googletrans…

    python 2023年6月5日
    00
  • Python如何用str.format()批量生成网址(豆瓣读书为例)

    要批量生成网址,我们可以使用Python中的 str.format() 方法。该方法可以让我们轻松生成一个字符串,其中可以插入一些占位符,以便我们在后面再填充数据。 下面我们以豆瓣读书为例,详细介绍如何使用 str.format() 方法来批量生成豆瓣读书的书籍网址。 第一步:定义网址模板 在生成网址之前,我们需要定义一个网址模板,用于指定网址的格式。以豆瓣…

    python 2023年5月18日
    00
  • 使用NumPy和pandas对CSV文件进行写操作的实例

    使用NumPy和pandas可以方便地对CSV文件进行读写操作。下面将详细介绍如何使用这两个库对CSV文件进行写操作。 准备工作 在使用NumPy和pandas对CSV文件进行写操作之前,需要安装这两个库。可以通过以下命令在命令行中安装: pip install numpy pandas 安装完成后,就可以在Python中使用这两个库了。 使用NumPy写入…

    python 2023年6月3日
    00
  • Python爬虫基础之XPath语法与lxml库的用法详解

    XPath语法是Python爬虫中常用的一种选择器,可以用于定位HTML或XML文档中的元素。在本文中,我们将深入讲解XPath语法的基础知识和lxml库的用法,并提供两个示例,以便更好地理解这个过程。 XPath语法基础 XPath语法是一种用于选择XML或HTML文档中元素的语言。XPath使用路径表达式来选择元素或元素集合。以下是XPath语法的一些基…

    python 2023年5月15日
    00
  • django如何计算两个TimeField的时差

    计算两个TimeField的时差,可以通过django内置的时间计算模块datetime以及timedelta实现。下面是具体步骤: 从django.utils中导入datetime模块。 from django.utils import datetime 定义两个TimeField类型的时间变量time1和time2,注意这个时间类型必须是24小时制。 t…

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