数据解析

Requests等可以抓取整个网页,但是我们并不需要整个网页的内容,则可以通过数据提取得到需要的内容。

三种解析方式:

1.正则表达式解析

2.bs4解析

3.xpath解析

正则表达式

优点: 速度快、效率高、准确性高 缺点:上手困难

正则语法:使用元字符进行排列组合用来匹配字符串,在线测试正则表达式:tool.oschina.net/regex/

元字符: 具有固定含义的符号

常用元字符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意空白字符
\d 数字
\n 换行符
\t 制表符

^ 字符串的开始
$ 字符串的结尾

\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空白字符
a|b a或b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符

量词:

1
2
3
4
5
6
* 重复零次或更多次
+ 重复一次或多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

贪婪匹配和惰性匹配:

1
2
.* 贪婪匹配
.*? 惰性匹配

案例:

1
2
3
4
5
6
7
str: 一起打游戏吗,待会打游戏吗,还是现在打游戏呢?
reg: 一.*?打游戏

结果: 一起打游戏

reg: 一.*打游戏
结果:一起打游戏吗,待会打游戏吗,还是现在打游戏