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

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文件操作基本流程代码实例

    下面是Python文件操作基本流程代码实例的完整攻略: 什么是文件操作? 在计算机中,文件是存储在磁盘或其他存储设备上的数据。文件操作是指向文件读取或写入数据的过程。 在Python中,文件操作分为以下两步: 打开文件 操作文件 打开文件后,可以读取或写入文件的内容。Python中的文件操作函数包括open()、read()、write()、close()等…

    python 2023年5月19日
    00
  • python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)

    BeautifulSoup是一个Python库,用于从HTML和XML文件中提取数据。它提供了一种简单的方式来遍历文档树,并提供了一些有用的方法来搜索和操作档树。以下是Python爬虫BeautifulSoup库使用操作教程全解: 安装BeautifulSoup 在使用BeautifulSoup之前,需要先安装BeautifulSoup。可以使用pip命令来…

    python 2023年5月14日
    00
  • Python实现拓扑算法的示例

    Python实现拓扑算法的示例主要分为以下几个步骤: 构造图数据结构,例如使用字典表示邻接表,或使用NetworkX等图论库; 拓扑排序,通常可以使用Kahn算法或DFS算法; 处理循环依赖,例如输出错误信息或处理成环形依赖。 下面分别通过两个示例说明实现拓扑算法的过程。 示例1:使用字典表示邻接表的拓扑算法 首先,构建一个有向无环图(DAG),使用字典表示…

    python 2023年6月5日
    00
  • Python实现GUI计算器(附源码)

    我来为您分享一下Python实现GUI计算器的攻略。 概述 Python实现GUI计算器主要是利用Python语言自带的Tkinter模块来完成界面的设计和事件处理。Tkinter是Python语言的标准GUI库,可以用于创建桌面应用程序。 步骤 导入Tkinter模块 from tkinter import * 创建主窗口对象 root = Tk() 设计…

    python 2023年5月19日
    00
  • 使用Python轻松实现绘制词云图项目(附详细源码)

    首先,我们需要明确一下什么是词云图。词云图是一种经常出现在文章中的可视化方式。它可以将给定的文本通过调整单词的字体大小和颜色等属性,形象地反映出文本中一些关键词的出现频率和重要性。比如,如果我们要通过一篇文章来了解它所讨论的主题是什么,词云图可以作为一个非常直观而有趣的帮助我们完成这个任务的工具。 那么,如何用Python来制作一个词云图呢? 一、安装所需的…

    python 2023年5月19日
    00
  • 一文带你了解Python中的输入与输出

    一文带你了解 Python 中的输入与输出 Python 语言有着丰富的输入输出方式,本文将从以下几个方面来讲解: 标准输入输出 文件的读写 字符串的读写 举例说明 标准输入输出 在 Python 中,可以使用 input() 函数用于从控制台获取用户输入,使用 print() 函数将结果输出到控制台。 示例: # 获取用户输入 name = input(‘…

    python 2023年6月5日
    00
  • python与idea的集成的实现

    下面详细讲解一下”Python与IDEA的集成的实现”的完整攻略。 前置要求 在开始整合Python和IntelliJ IDEA前,需要先满足以下条件: 安装Python,推荐安装Python 3.x版本 安装IntelliJ IDEA,推荐安装IntelliJ IDEA 2020.x以上版本 第一步:安装Python插件 在IntelliJ IDEA中,P…

    python 2023年6月6日
    00
  • 实例代码讲解Python 线程池

    下面是关于“实例代码讲解Python 线程池”的完整攻略。 1. 概述 Python 线程池是一种常见的并发编程方式,可以实现多个任务的并行处理。本文将介绍如何使用 Python 内置的 concurrent.futures 模块创建和使用线程池。 2. 创建线程池 在 Python 中创建线程池可以使用 ThreadPoolExecutor 类。以下是一个…

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