数据解析
Requests
等可以抓取整个网页,但是我们并不需要整个网页的内容,则可以通过数据提取得到需要的内容。
三种解析方式:
1.正则表达式解析
2.bs4
解析
3.xpath
解析
正则表达式
TIP
优点: 速度快、效率高、准确性高 缺点:上手困难
正则语法:使用元字符进行排列组合用来匹配字符串,在线测试正则表达式:tool.oschina.net/regex/
元字符: 具有固定含义的符号
常用元字符
python
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意空白字符
\d 数字
\n 换行符
\t 制表符
^ 字符串的开始
$ 字符串的结尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空白字符
a|b a或b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意空白字符
\d 数字
\n 换行符
\t 制表符
^ 字符串的开始
$ 字符串的结尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空白字符
a|b a或b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符
量词:
python
* 重复零次或更多次
+ 重复一次或多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
* 重复零次或更多次
+ 重复一次或多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
贪婪匹配和==惰性匹配==:
Python
.* 贪婪匹配
.*? 惰性匹配
.* 贪婪匹配
.*? 惰性匹配
案例:
python
str = '一起打游戏吗,待会打游戏吗,还是现在打游戏呢?'
reg = /一.*?打游戏/
结果 = '一起打游戏'
reg = /一.*打游戏/
结果 = '一起打游戏吗,待会打游戏吗,还是现在打游戏'
str = '一起打游戏吗,待会打游戏吗,还是现在打游戏呢?'
reg = /一.*?打游戏/
结果 = '一起打游戏'
reg = /一.*打游戏/
结果 = '一起打游戏吗,待会打游戏吗,还是现在打游戏'