Python网络爬虫快速入门到精通
课程地址
正则表达式
import re
re.compile(正则表达式).findall(原始字符串)
字符 | 匹配 |
---|---|
普通字符 | 正常匹配 |
\n | 换行符 |
\t | 制表符 |
\w | 字母、数字、下划线 |
\W | 非字母、数字、下划线 |
\d | 十进制数字 |
\D | 非十进制数字 |
\s | 空白字符 |
\S | 非空白字符 |
[abc123] | 原子表,abc123中的任意一个 |
[^abc123] | 原子表,除abc123外的任意一个字符 |
. | 任意一个字符(不包括换行符) |
^ | 开始位置 |
$ | 结束位置 |
* | 前一个字符出现 0\1\多 次,默认贪婪 |
? | 前一个字符出现 0\1 次 |
+ | 前一个字符出现 1\多 次,默认贪婪 |
*? | 懒惰模式 |
+? | 懒惰模式 |
{n} | 前一个字符出现 n 次 |
{n,} | 前一个字符至少出现 n 次 |
{n,m} | 前一个字符至少出现 n 次,之多出现 m 次 |
| | 模式选择符 或 |
() | 模式单元,最终提取到的内容 |
re.S | 使 . 可以匹配多行 |
re.I | 匹配时忽略大小写 |
例子:
贪婪模式
源字符串:“pythonpython”
正则表达式: “p.*y”
结果:[‘pythonpy’]
懒惰模式
源字符串:“pythonpython”
正则表达式: “p.*?y”
结果:[‘py’, ‘py’]
源字符串:“Python”
正则表达式: “pyt”
匹配方式: re.compile(“pyt”, re.I).findall(“Python”)
结果:[‘Pyt’]
XPath 表达式
表达式 | 含义 |
---|---|
/ | 逐层提取 |
text() | 提取标签下的文本 |
//标签名* | 提取所有名为*的标签 |
//标签名[@属性=‘属性值’] | 提取属性为属性值的标签 |
@属性名 | 代表取某个属性值 |
例子:
from lxml import etree data = ''' <html> <head> <title>主页</title> </head> <body> <p>abc</p> <p>bbbvb</p> <a href="a.com/v/detail1" target="_top">推荐1</a> <a href="a.com/v/detail2" target="_top">推荐2</a> <div class="jas" data-type="dr"> <div id="official"> 明月几时有 </div> </div> </body> </html> ''' html = etree.HTML(data) html.xpath('/html/head/title/text()')
表达式:/html/head/title/text()
结果:‘主页’
表达式://p/text()
结果:[‘abc’, ‘bbbvb’]
表达式://div[@id=‘official’]/text()
结果:‘明月几时有’
表达式://a/@href
结果:[‘a.com/v/detail1’, ‘a.com/v/detail2’]
其他小节笔记
阿里云爬虫项目课程笔记【2】:Urllib模块 与 糗事百科爬取实战
阿里云爬虫项目课程笔记【3】:腾讯视频评论实战
阿里云爬虫项目课程笔记【4】:Requests 模块 与 云栖社区博文爬虫实战
阿里云爬虫项目课程笔记【5】:Scrapy 模块 与 当当爬虫实战
阿里云爬虫项目课程笔记【6 - 8】:招聘信息、淘宝网商品信息 与 知乎 爬虫实战
阿里云爬虫项目课程笔记【9 & 10】常见的反爬策略与反爬攻克手段、腾讯漫画爬取实战 与 分布式爬虫