最近的一个项目有关网站图标爬取,所以将一些经验点及解决办法分享出来。
favicon图标介绍
favicon.ico一般用于网站logo标志,它显示在浏览器的地址栏、浏览器标签上或者在收藏夹上,是展示网站个性的缩略logo标志。
浏览器是怎么得到网站图标的?
浏览器首先会分析请求的网址源代码的head部分,找到带有rel="icon"属性的link元素,其中href属性就是图标地址,但是并不是所有网站都会设置这一项,有些网站喜欢直接将favicon.ico放在根目录下,便于SEO优化。因为搜索引擎爬虫会在网站根目录尝试请求favicon.ico,久而久之,潜移默化就变成了行业规范。了解了网站图标的获取源后,抓取思路就有了。
暴力请求
不管你网站根目录有没有favicon.ico,我就是要抓,至于能不能抓到,碰碰运气再说(毕竟这个运气概率还是非常高的)。以我们官网(https://www.kunquer.com)为例,PHP抓取代码如下:
$url = 'https://www.kunquer.com';$content = file_get_contents($url.'/favicon.ico');请原谅我不把代码一次性放出来,毕竟要讲得详细才够味(还有凑凑文章字数好交差)。怎么判断抓取回来的内容就是图标呢?也许只是一个404页面?保存内容到本地文件后,通过getimagesize()函数就能判断出来:
$file = tmpfile();$path = stream_get