最近自己正好自学爬虫这部分知识,因此,我想能不能用爬虫抓取网页,获得表情包,经过自己一天的研究,终于能实现这个功能,下面大家看我演(zhuang)示(bi)。
前期准备
1.我主要用到的是百度贴吧中的“表情包吧”,访问地址是:http://tieba.baidu.com/p/5059180075
2.进去后,按F12打开开发者调试,抓取一张表情图片,会发现其实就是一个<img>标签:<imgsrc="https://imgsa.baidu.com/forum/w%3D580/sign=c72193ed33292df597c3ac1d8c335ce2/34f9a451f3deb48fdf9bf71cf91f3a292cf57801.jpg"size="38255" changedsize="true" width="560"height="560">
3.通过对爬虫工作原理的了解,知道了需要做的就是抓取页面的所有图片的src资源路径:https://imgsa.baidu.com/forum/w%3D580/sign=c72193ed33292df597c3ac1d8c335ce2/34f9a451f3deb48fdf9bf71cf91f3a292cf57801.jpg
4.关于爬虫,虽然很有趣,但是操作起来并不容易,尤其是需要运用正则表达式知识,可以说一个爬虫的成功与否,正则表达式起了至关重要的作用,这里对正则还不熟悉的同学,可以看我之前写的正则入门的文章。
首先运用正则表达式把页面所有<img>标签筛选出来,那在html文件里匹配<img>标签的正则表达式该怎么写呢?
可以这样考虑:同一个图片的同类型img标签,按正常的写法<imgclass="BDE_Image",这部分是固定的;接着是src的资源路径,这是我们关注的重点;最后是width属性,height属性,这部分也不是固定的。
对于固定部分保持不变,src部分的匹配表达式可以这样写:([^”]*\.jpg),解释一下这段正则表达式,其中[]表示的是或,‘’值的是空字符,^指的是取反,所以[^‘’]指的是生成的字符类包含除了‘’的所有字符集合。*指匹配前面的[^”]0次或多次。此外还用到了()进行了分组。
最后,对于width和height部分,正则表达式:.*?
代码部分
运用结果
看到这么多表情包,真香!妈妈再也不用担心我和你们斗图了!
感兴趣的同学,后台回复「表情包」即可获得源码,大家抓紧试试吧!