正则表达式是一种强大的文本匹配工具,常用于爬虫程序中对网页内容进行匹配和提取。在 Python 中,可以使用 re 模块来操作正则表达式。
以下是一些正则表达式的常用语法:
- 匹配单个字符:
- . 匹配除换行符以外的任意单个字符
- \d 匹配数字
- \D 匹配非数字
- \w 匹配字母、数字和下划线
- \W 匹配非字母、数字和下划线
- \s 匹配空白字符(空格、制表符、换行符等)
- \S 匹配非空白字符
- 匹配多个字符:
-
-
- ? 匹配前面的字符0次或1次
- {n} 匹配前面的字符恰好n次
- {n,} 匹配前面的字符至少n次
- {n,m} 匹配前面的字符至少n次,最多m次
- 匹配特定位置:
- ^ 匹配字符串的开头
- $ 匹配字符串的结尾
- \b 匹配单词的边界
- \B 匹配非单词的边界
- 匹配字符集合:
- [...] 匹配方括号中的任意一个字符
- [^...] 匹配除了方括号中的字符以外的任意一个字符
例如,以下代码可以匹配一个 HTML 页面中的所有链接:
import re
import requests
url = 'https://www.example.com'
response = requests.get(url)
html = response.text
pattern = r'<a href="(.*?)".*?>'
links = re.findall(pattern, html)
print(links)
这里的正则表达式 r'<a href="(.*?)".*?>'
可以匹配所有形如 <a href="...">
的链接。其中 (.*?)
表示匹配任意字符,直到遇到下一个字符 "
,这样就可以提取出链接地址了。