Python爬虫基础:正则表达式实战与应用
151 浏览量
更新于2024-09-01
收藏 180KB PDF 举报
"网络爬虫基础教程中的正则表达式实战章节,涵盖了正则表达式的基本语法、Python的re库使用、Match对象的操作以及通过正则实现的淘宝商品比价和股票数据定向爬虫案例。"
在学习网络爬虫时,正则表达式是不可或缺的一部分,它用于处理和提取文本中的特定模式。本章节主要讲解了以下几个方面的内容:
一、正则表达式的语法
1. 常用操作符:
- `.` 表示任意单个字符
- `[]` 创建字符集,如 `[abc]` 匹配 a、b 或 c
- `[^abc]` 创建非字符集,匹配非 a、b、c 的字符
- `*`、`+`、`?` 分别表示前一个字符零次、一次或多次、零次或一次的扩展
- `|` 表示或操作,如 `abc|def` 匹配 abc 或 def
- `{m}`、`{m,n}` 控制重复次数,如 `ab{2}c` 匹配 abbc,`ab{1,2}c` 匹配 abc 或 abbc
- `^` 匹配字符串开头,`$` 匹配字符串结尾
- `()` 用于分组,支持内部的 `|` 操作
- `\d` 代表数字,`\w` 代表字母、数字或下划线
2. 经典正则表达式实例:
- `^[A-Za-z]+$` 匹配仅包含字母的字符串
- `^[A-Za-z0-9]+$` 匹配字母和数字的字符串
- `^-\d+$` 匹配整数形式的字符串
- `^[0-9]*[1-9][0-9]*$` 匹配正整数形式的字符串
- `[1-9]\d{5}` 匹配中国邮政编码
- `[\u4e00-\u9fa5]` 匹配中文字符
- `\d{3}-\d{8}|\d{4}-\d{7}` 匹配国内电话号码
二、Python的re库基本使用
1. 正则表达式的表示类型:如字符串或编译后的正则模式
2. re库主要功能函数:
- `re.match()`:从字符串开头匹配正则
- `re.search()`:在字符串中查找首次匹配
- `re.findall()`:返回所有非重叠匹配的字符串列表
- `re.sub()`:替换匹配的子串
- `re.split()`:根据匹配的子串拆分字符串
3. 另一种方法:使用`re.compile()`编译正则表达式,提高匹配效率
三、Re库的Match对象
1. 属性:如`.group()`获取匹配的子串,`.span()`获取匹配的起始和结束索引
2. 方法:如`.groups()`获取所有分组的值,`.groupdict()`获取命名分组的值
四、Re库的贪婪匹配与最小匹配
正则表达式中的星号(*)、加号(+)和问号(?)默认为贪婪匹配,尽可能多地匹配字符。使用`\?`可使它们变为最小匹配,只匹配尽可能少的字符。
五、实战应用
1. 淘宝商品比价定向爬虫:
- 写框架:构建网页抓取和解析的基础结构
- 完善函数:
- `getHTMLText()`:获取网页源代码
- `parsePage()`:解析HTML,使用正则提取商品信息
- `printGoodsList()`:打印商品列表
- `run()`:运行整个爬虫流程
2. 股票数据定向爬虫:
- `getStockList()`:获取股票代码列表
- `getStockInfo()`:获取指定股票的信息
这些实战案例展示了正则表达式在实际问题中的应用,通过编写爬虫程序,可以有效地抓取和处理网络上的数据。
2021-01-29 上传
2017-05-23 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
weixin_38675969
- 粉丝: 2
- 资源: 957
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常