跳转到内容
主菜单
主菜单
移至侧栏
隐藏
规范/协议
协议
算法
JVM
多线程/并发
存储
AI
深度学习
工具箱
最近更改
文章分类
全部文章
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空间皮肤图片
。
搜索
搜索
查看“︁Blog:抓取QQ空间皮肤图片”︁的源代码
添加话题