在前面的学习中,我们已经基本掌握了抓取整个网页的基本技能,但是在实际的需求当中,我们不需要整个网页的内容,只需要一小部分。这就涉及到数据提取的问题。
三种数据解析的方式:可混合使用
1、re解析
2、bs4解析
3、xpath解析
什么是正则表达式?
正则表达式:Regular Expression,一种使用表达式的方式对字符串进行匹配的语法规则。我们抓取的网页源代码本质上就是一个超长的字符串,想从中提取内容,用正则表达式刚好合适。速度快,效率高,准确性高,但难度较大,要掌握正则表达式编写的逻辑关系。
正则表达式的语法:使用元字符(具有固定含义的特殊字符)进行排列组合来匹配字符串,在线测试正则表达式:https://tool.oschina.net/regex/
常用的元字符:
. 匹配除换行符以外的任意字符
\w 匹配字母、数字或者下划线
\s 匹配任意的空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W 匹配非字母、非数字和非字符串
\D 匹配非数字
\S 匹配非空白字符
a|b 匹配字符a或者字符b
() 匹配括号内的表达式,也表示一个组
[…] 匹配字符组中的字符
[^…] 匹配除了字符组的字符的所有字符
量词:控制前面的元字符出现的次数
* 重复0次或者更多次
+ 重复1次或者更多次
? 重复0次或者1次
{n} 重复n次
{n,} 重复n次或者更多次
{n,m} 重复n到m次
贪婪匹配和惰性匹配
.* 贪婪匹配
.*? 惰性匹配
爬虫用得最多的就是惰性匹配。
正则表达式匹配案例:
匹配数字:
匹配中文:
惰性匹配 .*? 用的最多,可按需匹配:如需要贵州贵阳
匹配邮箱: