Python爬虫教程:正则表达式深度解析
83 浏览量
更新于2024-08-29
收藏 787KB PDF 举报
"这篇教程是关于Python爬虫学习与教学的第三部分,主要讲解了正则表达式的使用。"
在Python编程中,正则表达式(Regular Expression)是一种强大的文本处理工具,它能用于搜索、替换和提取符合特定模式的字符串。在爬虫开发中,正则表达式常用于解析和提取网页中的数据。本教程首先引入了`re`模块,它是Python内置的正则表达式库,用于处理正则表达式。
`re.search()`函数用于在字符串中查找第一个匹配正则表达式的子串。它返回一个匹配对象,如果未找到匹配项,则返回`None`。示例中的`r`前缀表示原始字符串,确保字符串中的反斜杠 `\` 不被当作转义字符处理。
正则表达式中的`.`字符代表任意单个字符,这与Linux命令行工具`grep`中的`.`用法相似。为了匹配IP地址,我们可以编写一个复杂的正则表达式,例如:
```python
re.search(r'((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])', '192.10.160.10')
```
此正则表达式由四个部分组成,每个部分匹配0-255之间的数字,中间用点分隔。这可以有效地捕获IPv4地址。
正则表达式的一个关键概念是贪婪和非贪婪模式。默认情况下,正则表达式会尝试匹配尽可能多的字符,这就是贪婪模式。若要改为非贪婪模式,只需在量词(如`*`、`+`、`?`)后面添加`?`,使正则表达式尽可能少地匹配字符。
`\A`和`\Z`分别用于匹配字符串的开始和结束位置。`^`匹配行首,而`$`匹配行尾,但它们在使用时不区分多行模式。
举例来说,`\B`和`\b`用于匹配单词边界。如果不想匹配含有下划线的单词,可以利用这两个标志。
正则表达式还可以通过编译(`re.compile()`)来提高性能,编译后的模式可以重复使用。`search()`和`match()`函数都会返回匹配对象,其中`start()`和`end()`方法可以获取匹配的开始和结束索引,`span()`返回一个元组,包含匹配的起始和结束索引。`findall()`方法返回所有匹配的子串,结果是一个列表。
在处理HTML或XML文档时,正则表达式常用于提取链接或图片地址。例如,以下代码片段展示了如何使用正则表达式从HTML字符串中提取图片URL:
```python
def get_img(html):
p = r'<img class="BDE_Image" src="([^"]+\.jpg)"'
img_list = re.findall(p, html)
return img_list
```
这段代码查找所有`<img>`标签,其中`class`属性为`BDE_Image`,并且`src`属性指向以`.jpg`结尾的URL。`findall()`返回这些URL组成的列表。
在编写复杂的正则表达式时,可以使用`VERBOSE`标志(`re.VERBOSE`),这样可以在正则表达式中添加注释,并使用空格和换行来提高可读性。例如:
```python
pattern = re.compile(r"""
<img # 开始的<img标签
class="BDE_Image" # 类名为BDE_Image
src=" # src属性开始
([^"]+\.jpg) # 图片URL,直到双引号结束,且以.jpg结尾
" # src属性的双引号结束
""", re.VERBOSE)
```
正则表达式是Python爬虫中不可或缺的一部分,用于高效地处理和提取数据。通过熟练掌握正则表达式,可以极大地提高数据提取的效率和准确性。
2018-08-29 上传
2020-05-16 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-03-28 上传
2022-05-29 上传
2021-04-11 上传
weixin_38716519
- 粉丝: 13
- 资源: 910
最新资源
- Apress Beginning PL/SQL From Novice to Professional Aug 2007
- ARM教程全集_是你进入ARM好帮手
- Python 中文手册
- DFD introduction
- STM32F10x参考手册
- 2006年下半年软件设计师试卷
- GDB不完全手册.doc
- Makefile详细操作指南.pdf
- gdb中文操作手册-debug
- 数据库第四版答案王珊主编
- stc12c4051ad
- QC API 编程实践,有点技术含量的好东东!
- 数据结构的链式基数排序
- div+css网页设计
- ubuntu8.04速成手册1.0pdf
- 基于FPGA的快速浮点除法器IP核的实现