首页
随机
最近更改
特殊页面
社群首页
参数设置
关于WHY42
免责声明
WHY42
搜索
用户菜单
登录
欢迎来到Riguz的小站!这是一个私人wiki,用来记录一些我的笔记。
查看“︁Blog:抓取QQ空间皮肤图片”︁的源代码
←
Blog:抓取QQ空间皮肤图片
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
最近把博客重新整理了一下,博文设置featured image果然看起来现代不少,但是要去哪找这么多合适的图片呢?当然PS是一个不错的选择,但是费时费力。看到QQ空间的皮肤倒是做的不错,直接拿来用吧,反正不违法。于是想用爬虫抓取。 先调试一下,找几个图片看看: <pre> http://i.gtimg.cn/qzone/space_item/orig/3/103603_top.jpg http://i.gtimg.cn/qzone/space_item/orig/7/101703_top.jpg http://i.gtimg.cn/qzone/space_item/orig/5/108725_top.jpg http://i.gtimg.cn/qzone/space_item/orig/15/111327_top.jpg http://i.gtimg.cn/qzone/space_item/orig/8/106904_top.jpg http://i.gtimg.cn/qzone/space_item/orig/10/102490_top.jpg </pre> 可以看到前面的网址都是一样的`orig/%d/%d_top.jpg`,刚开始以为前面的一个数字是主题编号还是什么的,后面自然是图片ID,于是用以下的脚本抓取(Scrapy): <syntaxhighlight lang="python"> 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) </syntaxhighlight> 后来抓取完成后,一共15个文件夹,每个文件夹差不多都是50-80个左右,这就有点意思了,可能腾讯利用了分布式的图片服务器,分散到0-15个不同的服务器上。随便找一个看看: 101195_top.jpg在11下面,通常取余的方式实现,于是来试试: <pre> 101195% 16 = 11 </pre> 另外再验证几次也都是正确的,证明的我们的猜想。于是我们可以修改一下我们的爬虫了: <syntaxhighlight lang="python"> 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) </syntaxhighlight> 这样抓取就快多了,总共抓取了1232个图片。
返回
Blog:抓取QQ空间皮肤图片
。