【python数据抓取技术与实战】正则表达式

python简单爬虫(下):实战应用——抓取豆瓣同城、登陆图书馆查询图书归还 在掌握了urllib几个模块的相关用法后,接下来就是进入实战步骤了~ 阅读详情

我之所以把正则表达式单独罗列出来讲,是因为我觉得它在爬虫技术中的地位真的非常重要。所以,这个章节你也要打起精神学习。

先来看看它是个什么工具

正则表达式是处理字符串的有力工具。python中有个re模块提供了大量的方法,能实现正则表达式相关的各类操作。re模块常用的函数包括match、search、findall,可以通过help('re')命令查看函数用法。

>>> help('re')
...
match(pattern, string, flags=0)
    Try to apply the pattern at the start of the string, returning
    a match object, or None if no match was found.

search(pattern, string, flags=0)
    Scan through string looking for a match to the pattern, returning
    a match object, or None if no match was found.

findall(pattern, string, flags=0)
    Return a list of all non-overlapping matches in the string.
    If one or more groups are present in the pattern, return a
    list of groups; this will be a list of tuples if the pattern
    has more than one group.
...

我们发现,第一个参数都是pattern(模式),它是一个可以包含特殊的字符的字符串,最常见的就是模式通配符,如" + "  " * "  " ?"  " . "等。我们通过例子来说明吧。

match函数

>>> import re
>>> date_s = '2016_06_01'
>>> m = re.match(r'2016',date_s)
>>> m
<_sre.SRE_Match object at 0x0000000002A66B90> 
>>> m.start()
0
>>> m.end()
4
>>> m.span()
(0, 4)
>>> m.group() 
'2016'

r'2016'即我们这里说的模式pattern,date_s即match函数中待匹配的字符串string。
r'2016'前面的符号r是python中'raw string'的标识。如果在一个字符串前面出现r作为前缀,则反斜杠不会被特殊处理,在该例子中不加r也是可以的。

r'\d+_\d+_\d+'
#模式 r'\d' 可匹配任何一个十进制数字字符,模式 '+'表示匹配前一个字符一次或多次

我们仍以date_s为例,可以匹配新的结果,代码如下:

>>> import re
>>> date_s = '2016_06_01'
>>> m = re.match(r'\d+_\d+_\d+',date_s)
>>> m
<_sre.SRE_Match object at 0x0000000002BA6B90>
>>> m.start()
0
>>> m.end()
10
>>> m.group(0)
'2016_06_01'

search函数

比match方法更灵活,match方法只能从字符串的开始进行匹配,search方法会扫描整个字符串查找匹配,对比如下所示:

>>> import re
>>> date_s_2 = 'today is 2016_06_01'
>>> m_match = re.match(r'(\d+)_(\d+)_(\d+)',date_s_2)
>>> m_match
>>> m_search = re.search(r'(\d+)_(\d+)_(\d+)',date_s_2)
>>> m_search
<_sre.SRE_Match object at 0x0000000002CBF750>
>>> m_search.groups()
('2016', '06', '01')
>>> m_search.group(0)
'2016_06_01'
>>> m_search.group(1)
'2016'
>>> m_search.group(2)
'06'
>>> m_search.group(3)
'01'

方法group:参数为0,返回值是全部匹配字符串;参数为1时,返回第一个分组的内容,依次类推
方法groups:返回一个包含全部匹配分组内容的元组

findall函数

findall可以找到所有的匹配,结合例子来说明:

>>> import re
>>> url='http://www.xyz123.com/prod_lst?start_time=2016_01_01&end_time=2016_12_31'
>>> m=re.match(r'(\d+)_(\d+)_(\d+)',url)
>>> m
>>> m=re.findall(r'(\d+)_(\d+)_(\d+)',url)
>>> m
[('2016', '01', '01'), ('2016', '12', '31')]

相信以上的例子都还是非常简单的,大家练手之后就能够掌握了。下面是常用的正则表达式字符和通常的含义,在遇到正则问题的时候可以做为参考。

符号含义
.匹配除"\n"之外的任意字符
+匹配前一个字符1次或多次
*匹配前一个字符0次或多次
?匹配前一个字符0次或1次
( )括号括起来的表达式表示一个分组
^匹配字符串的开头
$匹配字符串的末尾
[ ]表示字符的集合,可用-表示范围;当^出现在[ ]第一个字符时表示取反
\s匹配空白字符,等同于[ \t\n\r\f\v]。注意,\t前是空格符
\S匹配任何非空白字符,等同于[^ \t\n\r\f\v]
\d匹配数字,等同于[0-9]
\D匹配任何非数字,等同于[^0-9]
\w匹配单词字符(word characters),等同于[a-zA-Z0-9_]
\W匹配任何非单词字符,等同于[^a-zA-Z0-9_]
如何优化 Python 爬虫数据:去重与去噪的实现 摘要 在Python爬虫数据抓取过程中,去重和去噪是提升数据质量的关键步骤。本文介绍了URL与内容去重方法(如哈希值计算、URL标准化),以及使用BeautifulSoup、XPath等技术去除HTML噪声和无效内容。文章还提供了实战案例,展示如何通过组合去重去噪策略优化爬虫数据,为后续分析提供更干净、准确的数据基础。 阅读详情

相关推荐

校园网搜索引擎开发:Python实战指南

网络爬虫是一种自动化工具,它能够按照一定的规则,自动地从互联网上抓取所需内容。其基本功能包括但不限于网站内容的下载、信息的提取、链接的抓取以及数据的存储。网络爬虫被广泛用于搜索引擎索引构建、数据挖掘、网络监控等场景。在Python中,有多种库可用于解析HTML文档。其中最为流行的包括和lxml。: 一个非常流行的库,它提供了一系列方法来遍历、搜索和修改解析树。它的优点是简单易用,能够从复杂的HTML文档中轻松提取信息。它可以使用lxml和html5lib等作为底层解析器。

weixin_42551310的博客 1057

使用Python正则表达式操作文本数据

来源 | 愿码(ChainDesk.CN)内容编辑 愿码Slogan | 连接每个程序员的故事 网站 | http://chaindesk.cn 愿码愿景 | 打造全学科IT系统免费课程,助力小白用户、初级工程师0成本免费系统学习、低成本进阶,帮助BAT一线资深工程师成长并利用自身优势创造睡后收入。 官方公众号 | 愿码 | 愿码服务号 | 区块链部落 免费加入愿码全思维工程师社群 | 任一...

weixin_43970764的博客 974

Python数据抓取技术与实战.pdf

Python数据抓取技术与实战.pdf Python数据抓取技术与实战.pdf Python数据抓取技术与实战.pdf

Python 正则表达式进阶与实战

Python 正则表达式进阶与实战

Chandler_river的博客 511

Python数据抓取技术与实战.zip

Python数据抓取技术与实战

Python网络爬虫项目开发实战_数据抓取_编程案例解析实例详解课程教程.pdf

一个爬虫,可以通过跟踪链接的方式下载我们所需的网页。虽然这个例子很有意思,却不够实用,因为爬虫在下载网页之后又将结果丢弃掉了。现在,我们需要让这个爬虫从每个网页中抽取一些数据,然后实现某些事情,这种做法也被称为抓取(scraping)。首先,我们会介绍一个叫做Firebug Lite的浏览器扩展,用于检查网页内容,如果你有一些网络开发背景的话,可能己经对该扩展十分熟悉了。然后,我们会介绍三种抽取网页数据的方法,分别是正则表达式、Beautiful Soup和lxml。最后,我们将对比这三种数据抓取方法。

python如何爬虫股票数据_师傅带徒弟学Python:项目实战1:网络爬虫与抓取股票数据...

本视频基于**Python 3.X版本本视频课程是第四篇第一个实战项目,内容包括网络爬虫技术、使用urllib爬取数据、使用Selenium爬取数据、使用正则表达式、使用BeautifulSoup库、MySQL数据库、Python访问数据库、Lambda表达式和多线程。目录:22.1 网络爬虫技术概述22.1.1 网络通信技术22.1.2 多线程技术22.1.3 数据交换技术22.1.4 Web前...

weixin_39930144的博客 202

华为交换机与思科/华三设备LACP对接实战:手把手教你配置链路聚合

本文详细解析了华为交换机与思科、华三设备间的LACP链路聚合配置实战,涵盖核心原理、配置步骤及排错技巧。通过对比不同厂商的实现差异,提供可落地的跨厂商对接方案,助力企业网络工程师高效部署高可靠性链路聚合。

weixin_30836759的博客 424

python数据抓取技术与实战训练_师傅带徒弟学Python:项目实战1:网络爬虫与抓取股票数据...

本视频基于**Python 3.X版本本视频课程是第四篇第一个实战项目,内容包括网络爬虫技术、使用urllib爬取数据、使用Selenium爬取数据、使用正则表达式、使用BeautifulSoup库、MySQL数据库、Python访问数据库、Lambda表达式和多线程。目录:22.1 网络爬虫技术概述22.1.1 网络通信技术22.1.2 多线程技术22.1.3 数据交换技术22.1.4 Web前...

weixin_30127493的博客 147

恶意代码实验3:Word宏病毒实验

只要下次打开这个word文档,就会执行以上代码,并将自身复制到Normal.dot(word文档的公共模板)和当前文档的ThisDocument中,同时改变函数名(模板中为Document_Close,当前文档为Document_Open),此时所有的word文档打开和关闭时,都将运行以上的病毒代码,可以加入适当的恶意代码,影响word的正常使用,本例中只是简单的跳出一个提示框。回答不正确三次,即可自动跳出病毒程序,但那时已经出现几十个文档。1、打开的宏编辑器如图所示,即可编写病毒代码。

qq_63949327的博客 6505

状态机设计与实现( stm32小车避障为例)

本文以STM32小车避障为例,介绍了状态机设计与实现方法。首先阐述了状态机的事件驱动特性、清晰结构和易扩展优势,并给出硬件组成框架。核心实现部分展示了状态枚举定义、状态转移图和主循环框架,通过switch-case结构实现状态切换。关键状态示例包括前方扫描和转向决策逻辑,通过传感器数据驱动状态转移。总结指出状态机设计需定义枚举状态、实现状态函数、使用switch跳转并更新全局状态。文章最后声明内容为学习笔记,欢迎读者指正交流。全文结构清晰,代码示例具体,为嵌入式系统状态机设计提供了实用参考。

2302_80219536的博客 1047

视频教程-Python零基础入门+爬虫实战-Python

5天Python基础小课 优快云讲师名下集合了诸多业界知名讲师的公开课内容...

weixin_33534203的博客 405

【点云可视化】自制ply文件并使用open3d可视化点云

使用open3d可视化点云,需要将点云制作为ply文件传入函数中。 安装open3d 直接使用pip安装 pip install open3d ply文件 ply文件的结构为:文件头+数据内容,文件头从 ply 一行开始,到 end_header 为止,里面定义了此 ply文件中数据的组织形式,包括数据类型和个数。后面是点云的坐标信息及每个点的颜色属性的,参考自 如下为具有5个点的点云,end_header后每一行表示一个点的x,y,z,R,G,B信息 ply format ascii 1.0 comme

这个人很蓝 1万+

Python:项目实战1:网络爬虫与抓取股票数据-关东升-专题视频课程

本视频课程是《Python从小白到大牛》中的第四篇第一个实战项目,内容包括网络爬虫技术、使用urllib爬取数据、使用Selenium爬取数据、使用正则表达式、使用BeautifulSoup库、MySQL数据库、Python访问数据库、Lambda表达式和多线程。...

「智捷课堂」关东升的博客 765

USB3.0 Type-B连接器SSTX/SSRX信号定义常见错误与硬件设计避坑指南

本文详细解析了USB3.0 Type-B连接器中SSTX/SSRX信号的定义标准与常见设计错误。针对连接器厂商图纸可能出现的信号标识错误,提供了实用的排查方法和硬件设计避坑指南,帮助工程师避免因引脚定义颠倒导致的通信降级或故障,确保USB3.0高速传输的稳定性。

gg901的博客 1267

Altium Designer(AD24/25)如何在PCB设计阶段做阻抗匹配

目前阻抗匹配多直接有制版厂进行,PCB设计师在设计阶段可不关注阻抗设计,在加工阶段只需标注需要控制的阻抗线,制板厂即可按照要求对阻抗线进行调整和控制。但是对于设计师来讲掌握阻抗线的设计方法也是非常必要的。本文介绍Altium Designer(AD24/25)如何在PCB设计阶段做阻抗匹配。

fydar的博客 894

python3爬虫之入门和正则表达式

前面的python3入门系列基本上也对python入了门,从这章起就开始介绍下python的爬虫教程,拿出来给大家分享;爬虫说的简单,就是去抓取网路的数据进行分析处理;这章主要入门,了解几个爬虫的小测试,以及对爬虫用到的工具介绍,比如集合,队列,正则表达式;

peace唠叨 7914

[AI] 本地部署 Dify 遇到 Internal Error?一文彻底解决密码不一致引发的问题

摘要:Dify本地部署常见InternalError错误主要由配置残留或密码不一致导致,特别是修改.env文件后未同步清除数据库记录。彻底解决方案包括:1)清理Docker数据;2)删除旧配置和数据库;3)还原源代码;4)重建.env文件;5)重新初始化部署。关键提醒:记录部署路径、备份.env文件并妥善保存密码。该错误本质是配置冲突,最有效方法是完全重置而非调试,保持清晰的部署管理可避免多数InternalError问题。(149字)

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 435

Python爬取猫眼电影top100数据

最近研究爬虫,自己写了几个小项目,爬取猫眼电影top100的数据就是其中之一 先去解析一下页面,发现一共有10页,随便切了两页,发现他的一个url组成大致是 https://maoyan.com/board/4?offset=页面*10 然后写一个函数用来获取页面url def get_pages_url_list(): pages_url_list = [] for i in...

realmels的博客 2011

手把手教你学Simulink--基于多能源系统协同控制的复杂场景实例:氢燃料电池+锂电池混合动力电动汽车能量管理仿真

本文介绍了基于Simulink的氢燃料电池与锂电池混合动力电动汽车能量管理系统的建模与仿真方法。系统包含驾驶循环输入、燃料电池子系统、锂电池子系统、能量管理、电机驱动等模块,通过协同控制优化能源分配。详细说明了从模型创建到各子系统设置的7个步骤,并提供了MATLAB代码示例。该仿真可评估不同工况下的系统响应速度、能量利用效率和电池寿命等性能指标,为混合动力汽车的能量管理策略设计和优化提供参考。

MHD0815的博客 239

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

四、Python复习教程(重点)-爬虫框架

目录导航: 文章目录目录导航:七、Python网络爬虫基础(上)1. Python中的正则表达式2. 正则表达式基础语法介绍2.1 原子非打印字符:通用字符:2.2 元字符元字符:2.3 模式修正符2.4 贪婪模式与懒惰模式3. 正则表达式中的常用函数3.1 compile():3.2 match()3.3 search()3.4 findall()3.5 finditer()3.6 split()3.7 sub()3.8 subn()3.9 re.match与re.search与re.findall的区别

花开如雨的博客 8975

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python_chapter2_爬虫(Re正则表达式、Re模块补充、豆瓣实例、子页面获取下载地址实例、Bs4、Xpath)

python_chapter2_爬虫(Re正则表达式、) 在这里得感谢,B站up主路飞学城IT提供的优秀视频,此文章仅作为学习笔记,进行记录和分享… python,爬虫(给兄弟们挂个????) Alex,python基础 python边写边更… 一、数据解析概述: 若是服务器渲染,服务器会把 (html页面源码 + 数据) 放在一起 传回给 “浏览器”;而我们只想要,其中的一部分数据;这就涉及到数据抓取的问题; 有三种解析方式: 解析方式 Re解析、bs4解析、xpath解析 二、Re解析

“我口袋只剩玫瑰一片,此行又山高路远” 569

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【Python】Python写的简单爬虫,抓取视频信息

闲来无事,动手写个爬虫程序吧,虽然不是第一次写爬虫程序了,可是这么正经的写一个爬虫程序还真的是“第一次”呢!知道写的还有很多不足,希望多提意见,我好虚心接受,并修正我的爬虫程序,谢谢! 这个是我的爬虫源码存放处 dytt:爬虫相关操作 httpreq:网页相关操作 mysqldat: mysql数据库相关操作 rules:是爬虫提取网页信息的Xpath规则 ualib:由于自动生成UA的那个模块...

只剩渣了的博客 1850

Python 爬虫初学者实战

1. re解析2. bs4解析3. xpath解析7. re解析 使用正则表达式元字符: 具有固定含义的特殊符号 常⽤元字符. 匹配除换⾏符以外的任意字符\w 匹配字⺟或数字或下划线\s 匹配任意的空⽩符\d 匹配数字^ 匹配字符串的开始$ 匹配字符串的结尾[a-zA-Z0-9] 匹配字符组中的字量词: 控制前⾯的元字符出现的次数* 重复零次或更多次+ 重复⼀次或更多次?重复零次或⼀次{n} 重复n次{n,} 重复n次或更多次{n,m} 重复n到m次贪婪匹配和惰性匹配 (很重要)

xiangxueerfei的博客 538

Python 定向爬虫入门—Python(三)

安装lxml(flask等) easy_install lxml (不推荐) pip install lxml 手动安装 下载lxml库( http://www.lfd.uci.edu/~gohlke/pythonlibs/ )— 后缀名改为zip,解压— 将lxml文件夹放入C:\Python27\Lib中— 在.py 中import lxml 看报不报错 Pyth

banana_baba的博客 1041

谢乾坤 python-Python爬虫开发:从入门到实战(微课版)

第 1章 绪论 11.1 爬虫 21.2 爬虫可以做什么 21.2.1 收集数据 21.2.2 尽职调查 31.2.3 刷流量和秒杀 31.3 爬虫开发技术 4第 2章 Python基础 52.1 Python的安装和运行 62.1.1 在Windows中安装Python 62.1.2 在Mac OS中安装Python 72.1.3 在Linux中安装Python 82.2 Python开发环境 ...

weixin_39880318的博客 1277
上一篇: MongoDB的安装教程
下一篇: 【python数据抓取技术与实战】BeautifulSoup
yeverwen
博客等级 码龄14年 116粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值