学习了这么多课,我想大家已经发现了,web scraper 主要是用来爬取文本信息的。
在爬取的过程中,我们经常会遇到一个问题:网页上的数据比较脏,我们只需要里面的一部分信息。比如说要抓取 电影的评价人数,网页中抓到的原始数据是 ,但是我们期望只抓取数字,把 这三个汉字丢掉。
这种类似的操作在 Excel 可以利用公式等工具处理,其实在 web scraper 里,也有一个利器,那就是正则表达式。
正则表达式是一个非常强大工具,它主要是用来处理文本数据的,常用来匹配、提取和替换文本,在计算机程序中有非常广泛的应用。
web scraper 中也内置了正则表达式工具,但只提供了提取的功能。虽然功能有所残缺,对于 web scraper 使用者来说完全够用了,毕竟 web scraper 的定位就是不会写代码的小白,我们只需要学习最基础的知识就可以了。
我们先用 web scraper 初步尝试一下正则表达式。这里还是用豆瓣电影做例子,我们先选择电影的评价人数,预览图是这个样子的:
Text 选择器有个 的输入框,这个就是输入正则表达式的地方。我们输入 ,然后再点击预览,是这个样子的:
这时候你应该就明白了, 就是匹配一个数字的意思。如果我们要匹配多个数字呢?很简单,后面再加个「 」号就好。把 输入进去,预览一下:
很明显,所有的数字都匹配出来了。
上面讲了用 匹配数字,我们想一下日常用到的文本信息,不外乎这几种:数字、小写字母、大写字母,汉字,特殊字符(比如说各种计量单位、下划线回车等符号) 。
正则表达式里都有匹配这些字符的方法,下面我用一个表格列举出来:
上面列举了一些常用的,其实这些规则可以组合起来,比如说 和 组合起来,就是 ,表示匹配所有的字母。这些组合也有一些简写,我这里也列举一些:
基本上掌握以上内容就能匹配绝大多数字符了,这里我推荐一个正则练习网站:
http://c.runoob.com/front-end/854
按照下图所示就可以练习正则匹配了:
结合前面的例子,我们知道这些规则只能匹配一个字符,如何匹配多个字符?这就要学习正则表达式限定符。
我们已经知道在 [0-9] 后面加个加号「」就可以匹配多个字符了,其实还有很多限定符,详情可见下图表格:
学到这里,正则表达式可以算是入门了,我们可以上手几个真实的例子练习一下:
1.提取价格标签中的数字
假设 web scraper 爬到的文本信息是 ,我们要把 提取出来。这个这个文本里有 5 类数据:
首先我们匹配小数点前的数字 ,因为价格什么数字可以能出现,而且位数一般都大于 1 位,所以我们用 来匹配;
考虑到小数点「」在正则表达式里有特殊含义,我们需要小数点前面加反斜杠 表示转义,用 匹配;
小数部分同理,也用 匹配。
把这三部分组合在一起,即「」,这个表达式可以用一个图来表示:
上面就是我们写出的匹配正则,可以放在刚刚推荐的网站上验证一下:
2.匹配日期
假设 web scraper 爬到的文本信息是 ,我们要把 提取出来。我们把这个文本分解一下:
把上面的分析结果综合一下,就是
看上去还是挺复杂的,但是如果按上面的分析步骤一步一步来,你会发现匹配规则其实还是比较清晰的。
同样我们可以用一张图来表示上面的正则表达式:
本篇教程只是正则的入门学习,很多知识点还没有讲到。如果你对此感兴趣,可以去下面几个网站学习:
1.菜鸟教程:正则表达式
https://www.runoob.com/regexp/regexp-tutorial.html
继续深入学习的一个网站,不过想成为高手,还得多加练习
2.正则表达式在线测试
http://c.runoob.com/front-end/854
可以测试自己写的正则是否正确的一个网站,而且网页末有常用的正则表达式,很多可以直接复制黏贴来用。
3.Regulex 和 RegExr
https://regexr.com/
https://jex.im/regulex/
可以可视化的显示自己的正则匹配规则,教程中我就用了 regulex 生成正则匹配规则图。
我看了 web scraper 的源代码,它的正则表达式支持不完全,目前只支持提取文字的功能:
以上就是本篇文章【简易数据分析 17 | Web Scraper 高级用法——利用正则表达式筛选文本信息】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/quote/1452.html 行业 资讯 企业新闻 行情 企业黄页 同类资讯 网站地图 返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多