国际型网站建设战略网页游戏开服表
news/
2025/9/30 7:08:27/
文章来源:
国际型网站建设,战略网页游戏开服表,优化措施二十条,商务网站建设实训心得目录 一、网络爬虫中的正则表达式和re模块#xff08;一#xff09;数据提取的精确性#xff08;二#xff09;处理复杂的文本结构#xff08;三#xff09;提高数据处理效率 二、正则表达式的内涵#xff08;一#xff09;、常用元字符#xff08;二#xff09;、量… 目录 一、网络爬虫中的正则表达式和re模块一数据提取的精确性二处理复杂的文本结构三提高数据处理效率 二、正则表达式的内涵一、常用元字符二、量词控制前面的元字符出现的次数三、贪婪匹配和惰性匹配四、Python网络爬虫中的常用正则表达式五、Python中的re模块 三、典型案例一. **提取网页中的所有链接**二. **验证用户输入的电子邮件地址是否合法**三. **从文本中提取电话号码** 在 Python 中re模块提供了对正则表达式操作的支持包括
匹配、搜索、替换、分割等功能使得在网络爬虫中方便地运用正则表达式来处理抓取到的数据。 一、网络爬虫中的正则表达式和re模块
一数据提取的精确性
定位特定数据 在网页的HTML或其他文本数据中目标数据往往混杂在大量无关信息中。例如在一个电影网站上要提取某部电影的评分评分数据可能被包裹在特定的HTML标签内。正则表达式可以精确地定位这些数据。比如使用span classrating_num(.*?)/span这个正则表达式可以在HTML中找到电影评分所在的span标签并提取其中的评分数值。 过滤无关信息 网络爬虫抓取的网页内容包含大量不需要的信息如导航栏、广告、版权声明等。正则表达式可以帮助过滤掉这些无关数据。例如要从一个包含大量新闻文章的网页中提取正文内容通过分析网页结构发现正文内容在div classarticle - content标签内可以使用正则表达式div classarticle - content(.*?)/div来提取正文过滤掉其他非正文的HTML元素。
二处理复杂的文本结构
应对多样化的网页结构 不同网站的网页结构各异甚至同一网站的不同页面可能也有不同的结构。正则表达式具有很强的灵活性能够适应这种多样性。例如在一个电商网站上商品价格可能在不同页面以不同的HTML格式呈现。有的可能是span idprice19.99/span有的可能是div classproduct - price19.99/div。通过编写灵活的正则表达式如(span|div).*?(idprice|classproduct - price)(.*?)/(span|div)可以适应这种结构变化来提取价格信息。 处理嵌套结构 网页中的HTML标签常常存在嵌套关系正则表达式可以处理一定程度的嵌套数据提取。例如要从一个包含评论列表的网页中提取每条评论及其回复。评论可能在div classcomment标签内回复在div classreply标签内且嵌套在评论标签下。通过合适的正则表达式可以逐层提取这些嵌套的数据。
三提高数据处理效率
快速匹配 正则表达式引擎经过优化能够在大量文本中快速找到匹配的模式。在处理大型网页或大量网页时这种快速匹配能力尤为重要。例如在爬取一个包含数千条产品信息的电商网站时使用正则表达式可以快速扫描每个产品页面提取诸如产品名称、价格、销量等关键信息而不需要逐个字符去查找和判断。 减少代码复杂度 相较于手动编写复杂的字符串处理逻辑使用正则表达式可以用简洁的模式表达复杂的匹配规则从而减少代码量和复杂度。比如要从一个文本中提取所有的电话号码手动编写代码可能需要多层循环和条件判断。而使用正则表达式d{3}-d{4}-d{4}假设电话号码格式为XXX - XXXX - XXXX可以用很少的代码实现相同的功能。
在Python中re模块提供了对正则表达式操作的支持包括匹配、搜索、替换、分割等功能使得在网络爬虫中方便地运用正则表达式来处理抓取到的数据。
二、正则表达式的内涵
在线正则表达式工具网站在线正则表达式测试
正则表达式Regular Expression是一种用于描述、匹配和操作文本字符串的强大工具。它由一系列字符和操作符组成可以定义一个搜索模式用于在文本中查找、替换或验证符合特定模式的字符串。正则表达式在文本处理、数据验证、搜索引擎、编程语言等多个领域都有广泛应用。
一、常用元字符
普通字符 普通字符本身就匹配自身例如a匹配字符a5匹配数字5。 特殊元字符 .匹配除换行符以外的任意字符。w匹配字母或数字或下划线。s匹配任意的空白符。d匹配数字。n匹配一个换行符。t匹配一个制表符。^匹配字符串的开始。$匹配字符串的结尾。W匹配非字母或数字或下划线。D匹配非数字。S匹配非空白符。a|b匹配字符a或字符b。( )匹配括号内的表达式也表示一个组。[... ]匹配字符组中的字符。[^... ]匹配除了字符组中字符的所有字符。
二、量词控制前面的元字符出现的次数
*重复零次或更多次。重复一次或更多次。?重复零次或一次。{n}重复n次。{n,}重复n次或更多次。{n,m}重复n到m次。
三、贪婪匹配和惰性匹配
贪婪匹配.* 尽可能多地匹配字符。例如对于字符串abcde模式.*会匹配整个字符串。 惰性匹配.*? 尽可能少地匹配字符。例如对于字符串abcde模式.*?会匹配空字符串。
四、Python网络爬虫中的常用正则表达式
匹配URL 例如http[s]?://(?:[a-zA-Z]|[0-9]|[$-_.]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))可以匹配大多数HTTP和HTTPS的URL。 匹配电子邮件地址 例如^[a-zA-Z0-9_.-][a-zA-Z0-9-]\\.[a-zA-Z0-9-.]$可以匹配标准的电子邮件地址。 匹配IP地址 例如^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$可以匹配IPv4地址。
五、Python中的re模块
re.findall(pattern, string) 在字符串string中查找所有符合pattern的子串并返回一个列表。例如 import re
lst re.findall(m, mai le fen, mai ni mei!)
print(lst) # [m, m, m]re.search(pattern, string) 在字符串string中查找第一个符合pattern的子串如果找到则返回一个匹配对象否则返回None。例如 ret re.search(d, 5点之前你要给我5000万).group()
print(ret) # 5re.match(pattern, string) 从字符串的开头开始匹配如果开头不符合pattern则返回None。例如 ret re.match(a, abc).group()
print(ret) # are.finditer(pattern, string) 在字符串string中查找所有符合pattern的子串并返回一个迭代器。例如 it re.finditer(m, mai le fen, mai ni mei!)
for match in it:print(match.group())三、典型案例
一. 提取网页中的所有链接
使用re.findall和匹配URL的正则表达式可以从网页源代码中提取所有链接。例如
import re
import requestsurl https://www.example.com
response requests.get(url)
links re.findall(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_.]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F])), response.text)
print(links)二. 验证用户输入的电子邮件地址是否合法
使用匹配电子邮件地址的正则表达式可以验证用户输入。例如
import reemail input(请输入你的电子邮件地址)
if re.match(^[a-zA-Z0-9_.-][a-zA-Z0-9-]\\.[a-zA-Z0-9-.]$, email):print(电子邮件地址合法)
else:print(电子邮件地址不合法)三. 从文本中提取电话号码
使用合适的正则表达式可以从文本中提取电话号码。例如
import retext 我的电话号码是13812345678记得联系我。
phone_numbers re.findall(1[3-9]d{9}, text)
print(phone_numbers) # [13812345678]更多爬虫文章见专栏 Python网络爬虫
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/922562.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!