Contents1抓取QQ空间皮肤图片框架闲话编程Contents最近把博客重新整理了一下,博文设置果然看起来现代不少,但是要去哪找这么多合适的图片呢?当然是一个不错的选择,但是费时费力。看到空间的皮肤倒是做的不错,直接拿来用吧,反正不违法。于是想用爬虫抓取。先调试一下,找几个图片看看:http://i.gtimg.cn/qzone/space_item/orig/3/103603_top.jpghttp://i.gtimg.cn/qzone/space_item/orig/7/101703_top.jpghttp://i.gtimg.cn/qzone/space_item/orig/5/108725_top.jpghttp://i.gtimg.cn/qzone/space_item/orig/15/111327_top.jpghttp://i.gtimg.cn/qzone/space_item/orig/8/106904_top.jpghttp://i.gtimg.cn/qzone/space_item/orig/10/102490_top.jpg可以看到前面的网址都是一样的orig/%d/%d_top.jpg,刚开始以为前面的一个数字是主题编号还是什么的,后面自然是图片,于是用以下的脚本抓取(def start_requests(self): for i in range(0, 100): for j in range(100000, 119999): url = 'http://i.gtimg.cn/qzone/space_item/orig/%d/%d_top.jpg' % (i, j) yield scrapy.Request(url=url, callback=self.parse)后来抓取完成后,一共个文件夹,每个文件夹差不多都是个左右,这就有点意思了,可能腾讯利用了分布式的图片服务器,分散到个不同的服务器上。随便找一个看看:在下面,通常取余的方式实现,于是来试试:101195% 16 = 11另外再验证几次也都是正确的,证明的我们的猜想。于是我们可以修改一下我们的爬虫了:for i in range(100000, 200000): url = 'http://i.gtimg.cn/qzone/space_item/orig/%d/%d_top.jpg' % (i % 16, i) yield scrapy.Request(url=url, callback=self.parse)这样抓取就快多了,总共抓取了个图片。