Python网络数据抓取(8):正则表达式

简介: Python网络数据抓取(8):正则表达式

引言

正则表达式是查找文本模式的强大工具。它们就像在 Word 文档上使用 Ctrl-F 一样,但功能比它们强大得多。

当您验证任何类型的用户输入时,尤其是在抓取网页时,这非常有帮助。正则表达式的应用范围非常大。

一开始这可能会很有挑战性,但一旦你准备好了,相信我,这会让你的工作更有效率。

实战

它的符号和语法在所有编程语言中都是通用的。为了理解正则表达式,我们将验证您在 Python 中进行网页抓取时可能遇到的某些字符串。

假设您想从网络上抓取电子邮件以用于公司的潜在客户开发流程。电子邮件的第一部分可以包括:

  • 大写字母 [A-Z]
  • 小写字母 [a-z]
  • 数字 [0–9]

现在,如果被抓取的电子邮件不遵循此模式,那么我们可以轻松忽略该电子邮件并可以继续处理另一封电子邮件。我们将用 python 编写一个简单的代码来识别此类电子邮件,并且我们将使用 python 的 re 库。

import re

pattern = "[a-zA-Z0-9]+@"

括号允许我们指定我们正在查找给定字符串(例如电子邮件)中的字符。我们将匹配模式,直到 @ 符号和括号后面的加号意味着我们正在寻找这些字符中的一个或多个字符的任意组合。

由于电子邮件是由许多域提供的,因此我们必须指定我们正在寻找一个或多个大写和小写字母。

pattern = "[a-zA-Z0-9]+@[a-zA-Z]"

现在,让我们检查一下这是否可以与 if 和 else 语句一起使用。

email = input()

if(re.search(pattern,email)):
 print(“Valid email”)
else:
 print(“invalid email”)

在终端上运行此文件进行检查。

现在,让我们试试 info@scrapingdog.com。

这是您识别正确电子邮件字符串的方法。现在,我们将学习如何使用正则表达式将一个字符替换为另一个字符

字符替换

当您对大型数据库进行更改(其中可能有数千个字符串需要更新)时,这会派上用场。

现在,假设我们需要将每个电话号码输入到不带连字符的连续数字字符串中,但我们希望保留单词形式的连字符。我们将为此编写正则表达式。

import re
pattern =(\d\d\d)-(\d\d\d)-(\d\d\d\d)

“\d”将匹配任何单个数字。每组括号类似于一个组。

new_pattern = r”\1\2\3

因此,从左到右我们分为三个不同的组。但我们需要编写我们想要这个模式变成的内容。让我们保留该组但删除连字符。

每个反斜杠数字代表一个组,因此我们的新模式是将三个组连接在一起,而不使用连字符。我们将 r 放在字符串之前,将其视为原始字符串。

现在,让我们接受用户的输入并检查它是否有效。

import re

pattern =(\d\d\d)-(\d\d\d)-(\d\d\d\d)”
new_pattern = r”\1\2\3"

phoneNumber = input()

final_output = re.sub(pattern, new_pattern, phoneNumber)

print(final_output)

这只是如何在 Python 数据抓取中使用正则表达式的基本示例。正则表达式适用于任何语言,并且响应速度相当快。

相关文章
|
2月前
|
数据采集 监控 数据安全/隐私保护
Python正则表达式:用"模式密码"解锁复杂字符串
正则表达式是处理字符串的强大工具,本文以Python的`re`模块为核心,详细解析其原理与应用。从基础语法如字符类、量词到进阶技巧如贪婪匹配与预定义字符集,结合日志分析、数据清洗及网络爬虫等实战场景,展示正则表达式的强大功能。同时探讨性能优化策略(如预编译)和常见错误解决方案,帮助开发者高效掌握这一“瑞士军刀”。最后提醒,合理使用正则表达式,避免过度复杂化,追求简洁优雅的代码风格。
77 0
|
21天前
|
调度 Python
探索Python高级并发与网络编程技术。
可以看出,Python的高级并发和网络编程极具挑战,却也饱含乐趣。探索这些技术,你将会发现:它们好比是Python世界的海洋,有穿越风暴的波涛,也有寂静深海的奇妙。开始旅途,探索无尽可能吧!
49 15
|
24天前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
64 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
|
2月前
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
260 31
|
2月前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
87 7
|
2月前
|
存储 数据库 Python
利用Python获取网络数据的技巧
抓起你的Python魔杖,我们一起进入了网络之海,捕捉那些悠游在网络中的数据鱼,想一想不同的网络资源,是不是都像数不尽的海洋生物,我们要做的,就是像一个优秀的渔民一样,找到他们,把它们捕获,然后用他们制作出种种美味。 **1. 打开魔法之门:请求包** 要抓鱼,首先需要一个鱼网。在Python的世界里,我们就是通过所谓的“请求包”来发送“抓鱼”的请求。requests是Python中常用的发送HTTP请求的库,用它可以方便地与网络上的资源进行交互。所谓的GET,POST,DELETE,还有PUT,这些听起来像偶像歌曲一样的单词,其实就是我们鱼网的不同方式。 简单用法如下: ``` im
78 14
|
3月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
232 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
3月前
|
监控 算法 安全
公司电脑网络监控场景下 Python 广度优先搜索算法的深度剖析
在数字化办公时代,公司电脑网络监控至关重要。广度优先搜索(BFS)算法在构建网络拓扑、检测安全威胁和优化资源分配方面发挥重要作用。通过Python代码示例展示其应用流程,助力企业提升网络安全与效率。未来,更多创新算法将融入该领域,保障企业数字化发展。
95 10
|
3月前
|
存储 监控 API
1688平台API接口实战:Python实现店铺全量商品数据抓取
本文介绍如何使用Python通过1688开放平台的API接口自动化抓取店铺所有商品数据。首先,开发者需在1688开放平台完成注册并获取App Key和App Secret,申请“商品信息查询”权限。接着,利用`alibaba.trade.product.search4trade`接口,构建请求参数、生成MD5签名,并通过分页机制获取全量商品数据。文中详细解析了响应结构、存储优化及常见问题处理方法,还提供了竞品监控、库存预警等应用场景示例和完整代码。
|
3月前
|
机器学习/深度学习 API Python
Python 高级编程与实战:深入理解网络编程与异步IO
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧、数据科学、机器学习、Web 开发和 API 设计。本文将深入探讨 Python 在网络编程和异步IO中的应用,并通过实战项目帮助你掌握这些技术。

推荐镜像

更多