分析
由于百度图片获取的方式是采用ajax,所以你从正常的url链接只能提取到一个页面显示的图片,也就是前30张(还是前60张)
具体的分析是:你下拉页面滚动条,分析XHR的变化,就可以找到所需要的Json数据,比如说这个就是分析后找的Json数据
1.json连接:
2.参数:
可以看到上面的链接,word就是搜索关键词,pn是第几页,rn是每页多少图片(默认30)还可以看到其他的参数暂时可以不关心。
3.json数据
通过访问上面的json链接得到一份json数据,分析json数据,data数组中包含了图片信息,可以看到data数组的元素中有一个objURL的连接,
“objURL”:”ippr_z2C$qAzdH3FAzdH3Ft4w2jf_z&e3B4wvx_z&e3BvgAzdH3Fu5674AzdH3Fda8n8aAzdH3Fd8AzdH3F8b8ccaacas17ir6i1lf1rn_z&e3B3r2”,
replaceUrl中也有ObjURL,不过第一个objurl看起来是加密过的,百度一下发现 解密方法很简单,秘钥是一个字符的对应关系,有2种映射:
1.多个字符映射为一个字符,
‘_z2C$q’ => ‘:’
‘_z&e3B’ => ‘.’
‘AzdH3F’ => ‘/’
2.单个字符映射为单字符,字符映射表为
将objurl解密就可以得到图片的真正链接
def decode_url(self, url):
in_table = u'0123456789abcdefghijklmnopqrstuvw'
out_table =