http://www.cnblogs.com/dennisit/archive/2013/01/03/2842925.html

无聊的元旦,用Java实现QQ空间备份器时分析了如何进行模块爬取实际地址中的需要信息的感悟,与图解步骤,写出来与大家共享,交流.

随便点击一个用户进入空间,然后选择日志,进入日志列表

比如我的空间日志列表的URL为:

http://user.qzone.qq.com/799089378/infocenter#!app=2&via=QZ.HashRefresh&pos=catalog_list

这个整体URL对每个用户是一致的,不同的用户换QQ号码即可,笔者换成的是好友的1325103287,接下来就针对好友的日志列表进行分析

说明一下,笔者用来帮助分析的浏览器为Google Chrome

进入列表后然后就可以看到第一页的日志了,点击第2、3、……会发现上面的URL没有变,但是每次点击时先别急着进入,鼠标放到选定日志上,比如我选择第一篇[回梦千年,君不见],这时注意左下角

可以看到右下角是以这样的格式展示的

http://user.qzone.qq.com/1325103287/blog/1305125403

这个后面的数字是什么呢,可以尝试不同的日志发现格式是一样的,不同的是后面的参数,那么后面这个参数就是该篇日志的引导ID.

点击进入日志,这时会发现URL改变了

http://user.qzone.qq.com/1325103287/infocenter#!app=2&via=QZ.HashRefresh&pos=1305125403

Pos属性的值为改日志的引导ID

点击下一篇

http://user.qzone.qq.com/1325103287/infocenter#!app=2&via=QZ.HashRefresh&pos=1305125304

发现URL中变得只是pos的值,这样就可以定位到指定的ID了

所以设想一下,如果你能获取到该QQ用户的所有日志引导ID,然后搞个线程进行列表循环URL打开,是不是一个空间日志刷人气的软件就搞定了呢!

没啥价值,跳过,转到正题,

如何获取用户的所有引导ID呢?

还是进入列表

http://user.qzone.qq.com/1325103287/infocenter#!app=2&via=QZ.HashRefresh&pos=catalog_list

从这里开始分析起

这时右键查看元素,借助于浏览器(,其它浏览器也可以只是笔者用的是Chrome,所以就用Chrome来截图分析)

瞅了半天,貌似Elements中没有啥有价值的东东,哈哈,亲 选错标签了,点击Resource,然后就有惊喜了,

收获的幸福不言而喻,注意这里的tblog(bloglist.html),用脚趾头都能猜到要的信息在这里了,打开该组合列表

只有三项Images、Scripts、Stylesheets.

Images中只有图片,Stylesheets中只有一个html文件.Scripts中会找到相关的信息吗?试试就知道了.. 动手能力要强哇,不是所有问题都是坐着想出来的.

打开Scripts选项,然后进入空间日志,分别浏览第一页.第二页,第三页...

会发现,Scripts中的文件发生了变化.

如图,我浏览的页数是这样的:1、2、3、1.

成对出现了get_abs和get_count,这表明出现的文件中保存着我浏览时用的信息,是什么呢,继续分析

我选择第一个get_abs文件,会看到出现如下的提示

选择第一个get_count也同样有提示,但是这里的提示更幸福,注意idList中的属性值,这不是日式的引导ID嘛! 惊呼一下,

然后查看get_count中的内容

itemList:即为当前展示页上的用户的参数,id表示日志的引导ID,read表示日志访问量,

需要的东西貌似都找出来了,接下来就是分析了

Get_abs内容对比

第一个get_abs

http://b11.qzone.qq.com/cgi-bin/blognew/get_abs?hostUin=1325103287&blogType=0&cateName=&cateHex=&statYear=2013&reqInfo=7&pos=0&num=15&sortType=0&absType=0&source=0&rand=0.8141584321856499&g_tk=5381&verbose=1&ref=qzone

后面的几个get_abs多个几个对我们达到目的没用的参数,之所以说没用是因为后面那些的值都没变,我们找的是变的共性, 发现每次变的是pos的值跟num的值

Pos的值按照页数递增+15,num的值一直是15

跟MySQL中查询很像,pos=0,num=15,表示第一页从0开始显示15个,pos=15,num=15表示从15开始,显示15个.

但是get_abs中的内容也有共性和变性

共性: totalNum是用户所有的日志数目

变形: title 是每篇日志的名称,cate是日志的分类.

所以要获取日志信息,只要按照get_abs请求进行发送,接收到的响应数据包中进行爬取我们需要的数据就可以了

怎么理解呢,

发送的包样式肯定是第一个get_abs的形势,因为不确定用户日志的个数,所以第一次发出去数据包之后,我们收到的响应中

会在totalNum中进行包含.那么我们就可以计算日志有多少页

页数 = totalNum/15   (该用户的totalNum=315,那么可以算出有页数为315/15=21页)

共性: totalNum是用户所有的日志数目

变形: title 是每篇日志的名称,cate是日志的分类.

所以要获取日志信息,只要按照get_abs请求进行发送,接收到的响应数据包中进行爬取我们需要的数据就可以了

怎么理解呢,

发送的包样式肯定是第一个get_abs的形势,因为不确定用户日志的个数,所以第一次发出去数据包之后,我们收到的响应中

会在totalNum中进行包含.那么我们就可以计算日志有多少页

页数 = totalNum/15   (该用户的totalNum=315,那么可以算出有页数为315/15=21页)

证明想法是对的,只要循环21次就可以把所有日志的title、类别、发表时间、日志ID、找出来.

至于如何备份呢,可以选择每个日志id创建一个文件,文件名为日志名称,第一行创建日志的相关信息,也可以选择每15个日志创建一个文件.根据个人喜好咯

至此我们的日志刷人气软件就彻底分析结束了!

接下来如果做日志备份(下载到本地),虽然我们需要的日志关键信息(ID)找出来了,日志个数也知道了

而且前面已经分析了每篇日志显示方式是如下的方式

http://user.qzone.qq.com/1325103287/blog/1305125403

或者最终URL

http://user.qzone.qq.com/1325103287/infocenter#!app=2&via=QZ.HashRefresh&pos=1305125403

但是这样我们查看源码时候还是没有发现日志内容,那么就需要我们继续往下分析了.

按照前面的方式在日志页面,同样进行审查元素.看到tblog目录,然后在stylsheets中会有一个为日志输出文件服务的文件blog_output_data

内容如下:

http://b11.qzone.qq.com/cgi-bin/blognew/blog_output_data?uin=1325103287&blogid=1305125403&styledm=ctc.qzonestyle.gtimg.cn&imgdm=ctc.qzs.qq.com&bdm=b.qzone.qq.com&mode=2&numperpage=15&blogseed=0.491407030262053&property=GoRE×tamp=1357192365&dprefix=&g_tk=5381&ref=qzone&v6=1&entertime=1357192364386&via=QZ.HashRefresh&pos=1305125403

上面的地址就是日志的实际地址

至此指定QQ用户的所有日志ID获取,与日志实际地址获取介绍完毕.

可以根据上面的分析的实际地址进行爬取来实现QQ空间日志备份了.

转载请注明出处[http://www.cnblogs.com/dennisit/archive/2013/01/03/2842925.html]

图解QQ空间日志爬虫的全部日志获取与日志实际地址分析.相关推荐

  1. python爬虫qq好友信息,GitHub - equationl/QQzone_crawler: QQ 空间动态爬虫,利用cookie登录获取所有可访问好友空间的动态保存到本地...

    关于 Edit by equationl 优先在 码云 上更新 该项目修改自 xjr7670 的 QQzone_crawler 原作者说明: QQ空间动态爬虫 修改了什么? 爬取完整的评论列表 爬取点 ...

  2. 自己动手写一个QQ空间网络爬虫--qqzoneSpider

    QQ空间网络爬虫软件--qqzoneSpider qqzoneSpider 目录 安装 环境 Python版本 相关库 爬虫相关 数据库相关 GUI相关 可视化相关 数据分析相关 使用说明 操作步骤 ...

  3. QQ空间Python爬虫v2.0--点赞数据分析

    记上一次v1.0的空间爬虫之后,准备再写一个爬虫分析本人说说的点赞情况 首先分析Json: 可以发现点赞的节点为data-->vFeeds(list)-->like-->likema ...

  4. python访问陌生人qq空间_Python爬虫获取QQ空间信息(上)

    开发工具 Python版本:3.6.4 相关模块: requests模块: selenium模块: lxml模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip ...

  5. python爬取加密qq空间_python3爬虫爬取QQ好友空间说说

    开发环境Win10 python 3.6.3 pycharm 2018.1 第三方库csv requests pymysql selenium 无头浏览器 PhantomJS 主要思路通过QQ邮箱导出 ...

  6. QQ空间Python爬虫(3)---终章

    经测试上一节的代码成功跑通,接下来加上循环爬取所有说说-.- 完整代码: 1 import requests 2 import json 3 import os 4 import shutil 5 i ...

  7. 电脑qq文件服务器地址,在电脑上接收QQ地理位置打不开,提示获取不到详细地址...

    满意答案 cvs58639 2014.08.24 采纳率:41%    等级:7 已帮助:157人 先检查你的网线是否正常,如:水晶头是否松动,网线内部是否折断. 然后再看是否是DNS服务器的问题: ...

  8. QQ 空间日志批量导出到CSDN

    QQ 空间日志批量导出到CSDN QQ空间批量导出助手,一款非常好用的工具,可以批量导出QQ空间的内容,我这里用到日志导出 首次使用的时候,请设置导出的格式,和导出下载工具 注意不要勾选图片类型识别, ...

  9. SPL - QQ空间日志查看工具 v1.1.0.441

    v1.1.0.441 下载地址:http://download.csdn.net/source/2201645 更新信息: v1.1.0 2010.4.4 ====================== ...

  10. Python网络爬虫5 - 爬取QQ空间相册

    自毕业后,就再也没有用过QQ,QQ空间里记录的是些并不精彩的青葱岁月,但好歹也是份回忆,近日想着学以致用,用Python把QQ空间相册的所有照片爬取下来,以作备份. 分析QQ空间 登录QQ空间 爬取第 ...

最新文章

  1. 聊聊 Kafka: Kafka 的基础架构
  2. 今天mtk笔试,没信心了
  3. java正则表达式空行_正则表达式删除空行
  4. EasyDarwin开源流媒体服务器进行RTSP转发过程中将sdp由文件存储改成内存索引
  5. c# 多线程 执行事件 并发_C#.NET Thread多线程并发编程学习与常见面试题解析-1、Thread使用与控制基础...
  6. zabbix-server-mysql安装_zabbix server 安装部署
  7. PAT乙类1013 数素数 (20 分)
  8. 影视剪辑,Pr视频剪辑软件自学,界面介绍与自定义
  9. 微信小程序 button按钮 image图片
  10. 不可重复读,虚读和脏读的区别
  11. Flutter couldn‘t find “libflutter.so“
  12. c++单链表 一元多项式求和_C++一元多项式相加
  13. opencv计算图像亮度调节_opencv调整图像亮度对比度
  14. IIR数字滤波器设计(数字信号处理)
  15. MLAT-Autoencoders---下篇-关键代码及结果展示(3)(终)
  16. vyos my_cli_shell_api 不见了
  17. Python 调用百度翻译接口实现翻译
  18. SAP成都研究院小伙伴们2018~2019两年间的179篇原创文章合集
  19. 导出excel,前后台代码示例
  20. Problem-solving,掌握这个技巧才能提升价值!

热门文章

  1. 新词发现-helloNLP
  2. 牛客练习赛73 B.遥远的记忆(并查集)
  3. 聚类分析--k中心点算法
  4. 2006-01-23,科比-布莱恩特得了81分
  5. SQL SERVER2000安装挂起问题
  6. VTK实现多个体数据映射到一起进行渲染
  7. 网站被攻击如何修复网站漏洞
  8. Java中的Date时间转换【SimpleDateFormat (parse和format)】和Calendar日历表
  9. vue 下载Excel 文件
  10. SSD的priorbox层