Python爬虫基础:正则表达式实战与应用

2 下载量 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()`:获取指定股票的信息 这些实战案例展示了正则表达式在实际问题中的应用,通过编写爬虫程序,可以有效地抓取和处理网络上的数据。