零基础写python爬虫之神器正则表达式

零基础写Python爬虫之神器正则表达式

正则表达式是一种强大的工具,可以用于匹配、查找和替换文本中的模式。在Python爬虫中,正则表达式常用于解析HTML页面,提取所需的数据。本攻略将详细讲解正则表达式的基本用法、常用符号和示例应用。

基本用法

Python中使用re模块提供的函数来操作正则表达式。常用函数:

  • 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):在字符串中搜索正则表达式的所有匹配项,并将其替换为指定的字符串。

其中,pattern表示正则表达式,string表示匹配字符串,flags表示正则表达式的匹配模式。

下面是一个例子,示范如何使用re模块的search()函数:

import re

text = 'The quick brown fox jumps over the lazy dog.'
pattern = r'fox'
result = re.search(pattern, text)
if result:
    print('Match found:', result.group())
else:
    print('Match not found')

在上面的代码中,我们使用正则表达式fox匹配字符串中的foxsearch()用于在字符串中搜索正则表达式的第一个匹配项。运行代码后,输出结果为Match found: fox

常用符号

下面是一些常用的正则表达式符号:

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

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

import re

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

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

示例1:匹配HTML标签中的文本内容

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

import re

text = '<h1>Welcome to website</h>'
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)
html = response.text
pattern = r'<img.*?src="(.*?)".*?>'
result = re.findall(pattern, html)
if result:
    print('Matches found:', result)
else:
    print('Matches not found')

在上面的代码中,我们使用正则表达式<img.*?src="(.*?)".*?>匹配网页中的图片链接。<img.*?>表示匹配img标签,src="(.*?表示匹配src属性中的链接,()表示匹配到的链接作为捕获组。findall()函数返回所有匹配的结果。运行代码后,输出结果为匹配到的图片链接列表。

以上是两个示例,演示了如何使用正则表达式匹配HTML标签的文本内容和提取网页中的图片链接。正则表达式是Python爬虫中常用的工具,读者可以通过这些示例更好地理解正则表达式的应用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:零基础写python爬虫之神器正则表达式 - Python技术站

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

相关文章

  • Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】

    下面是关于“Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】”的完整攻略。 1. DBSCAN算法的基本原理 DBSCAN(Density-Basedustering of Applications with Noise)是一种基于密度的聚类算法,它将数据点分为核心点、界点和噪声点三类。DBSCAN算法的基本流程如下: 初始化:选择一个未…

    python 2023年5月13日
    00
  • 使用豆瓣提供的国内pypi源 原创

    使用豆瓣提供的国内pypi源,可以使我们在国内下载Python包的速度更快、更稳定。下面是使用豆瓣提供的国内pypi源的详细攻略: 步骤一:安装pip pip是一个python包管理工具,在使用pip之前,需要先安装pip。如果你的电脑已经安装了Python,则可以通过以下命令来安装pip: $ easy_install pip 步骤二:备份pip源 在更换…

    python 2023年5月14日
    00
  • 如何使用python获取计数和以前的比较

    【问题标题】:How to get comparison between count and previous using python如何使用python获取计数和以前的比较 【发布时间】:2023-04-05 18:43:01 【问题描述】: 我想比较当前和以前的两件事,我该如何实现,谁能帮助我提前谢谢你 import threading import …

    Python开发 2023年4月6日
    00
  • python学习实操案例(三)

    《Python学习实操案例(三)》是一篇关于Python实战应用的文献,主要讲述了基于API获取天气数据并进行简单可视化的项目。下面是该项目的详细攻略: 一、背景介绍 介绍天气数据可视化的基本概念和优势,以及介绍使用的工具和平台。 二、API的基本概念 介绍API的定义,分类,以及API的读取方式。 三、使用心知天气API 介绍心知天气API的使用方式,包括…

    python 2023年6月3日
    00
  • python搜索算法原理及实例讲解

    Python搜索算法原理及实例讲解 搜索算法是计算机科学中的基本问题之一,它的目的是在一个数据集合中查找特定的元素。在Python中,可以使用多种搜索算法来查找数据。本文将介绍Python的搜索算法原理及实例讲解。 搜索算法原理 1. 线性搜索 线性搜索是一种简单的搜索算法,它的基本思想是从数据集合的第一个元素开始,逐个比较每个元素,直到找到目标元素或遍历完…

    python 2023年5月13日
    00
  • 类在python中似乎不是全局的

    【问题标题】:Class does not seem to be Global in python类在python中似乎不是全局的 【发布时间】:2023-04-04 04:06:01 【问题描述】: 我设置了一个类,它在一个 if 语句中接受并打印出变量。 class npc: #class for creating mooks def __init__(…

    Python开发 2023年4月6日
    00
  • python 字典(dict)按键和值排序

    Python中的字典(dict)是一种无序的键值对集合,但有时需要按键或值的顺序来对字典进行排序。下面是Python字典按键和值排序的完整攻略。 按键排序 可以使用Python内置的sorted()函数和dict.items()方法来按照字典的键进行排序,得到一个元组列表结果。 示例1: # 初始化字典 my_dict = {‘a’: 3, ‘b’: 2, …

    python 2023年5月13日
    00
  • python中shutil和shutil库的用法

    一、shutil目录和文件操作 Python shutil库提供了对文件和目录复制、移动、删除、压缩、解压等操作。 1. 复制文件或目录 shutil.copy(src, dst):复制文件或目录 shutil.copyfile(src, dst):复制文件,src和dst只能是文件 shutil.copytree(src, dst, dirs_exist_…

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