爬取百度和搜狗搜图

搞一个机器学习的东西需要大量的带标签的图片,想了一下,还是直接用百度或者搜狗这类直接搜索得到的结果比较快。

首先看一下百度搜图,打开之后发现这是一个异步加载的页面,只有滑倒最低端的时候才会继续加载。这里先抓包看一下:img

可以发现这就是向http://image.baidu.com/search/acjson这个地址发了一个包,而收到的直接是一个json,通过观察可以发现img

这个objURL在html中是图片的原始地址,但是在这个地方收到的却是加密过后的,本来感觉有点绝望,然而无意间在谷歌搜到了解密算法,非常高兴。

img

而这个参数也一目了然,需要改一下的就是queryWord和word,还有后面的pn和rn,经过实验,rn是收到的图片数量,为0-60,pn是开始的序号。


搜狗的话就更简单了,由于搜狗返回的url没有加密,所以用同样的方法就可以抓到。

爬图的过程中还出现了json解析错误的情况,调试后发现,返回的json中有对图片的描述,而这些描述有些是带引号的,就会变成 \”,而解析的时候没有解析这个转义,所以报错。解决的方法很多,我是直接正则表达式替换了那几个可能出现问题的索引。

发表评论

电子邮件地址不会被公开。 必填项已用*标注