如何抓取百度无水印优质图片
最近需要在百度下载一些图片来用,需要几张还好,如果太多了那就是体力活了,作为程序员,怎么能在网上自动批量呢?让代码替我们做
爬虫走起!
我们在百度图片随便搜索一个关键词,比如小狗,结果如下:
我们会发现网址结尾有个word=小狗,所以如果我们要批量搜索每个关键字的图片,只需要遍历替换关键字拼接网址就行了,这个很简单,不啰嗦。
但是我们把网址复制下来后,会发现变成了这样:
http://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=%E5%B0%8F%E7%8B%97
“小狗”两字变成了URL编码,所以我们要注意在拼接网址的时候,先把关键字经过URL编码后再用。
接下来,ctrl+u,查看网页源代码,头部很长,略过,翻到图片内容区域,画风如下:
图片列表的内容是JS异步加载的,从app.setData这里开始的,虽然是异步的,但是仍然能看到有用的信息,比如这里的hoverUrl和base64加密内容。基本上图片列表的内容来自两个地方,一种是url的图片链接,这种网址有的能访问,但是大多数情况下是403,无法访问,大多是其他网站的外链,可能还有水印。所以我们的策略是抓取100%有效的内容。对,就是base64加密字符串。
解析到网页内容,清洗之后拿到加密串,再解密转成图片保存本地就行了。