前言:

上一篇文章:《QQ空间爬虫分享(一天可抓取 400 万条数据)》
Github地址:QQSpider
Q群讨论:

很抱歉QQSpider这个爬虫过了这么久才作更新,同时也很感谢各位同学的肯定和支持!
这次主要替换了程序里一些不可用的链接,对登录时的验证码作了处理,对去重队列作了优化。并且可以非常简单地实现爬虫分布式扩展。

使用说明:

启动前配置:

  1. 需要安装的软件:python、Redis、MongoDB(Redis和MongoDB都是NoSQL,服务启动后能连接上就行,不需要建表什么的)。
  2. 需要安装的Python模块:requests、BeautifulSoup、multiprocessing、selenium、itertools、redis、pymongo。
  3. 我们登陆QQ要使用到phantomJS(下载地址:http://phantomjs.org/download.html),下载完将里面的 phantomjs.exe 解压到python目录下即可。

启动程序:

  1. 进入 myQQ.txt 写入QQ账号和密码(不同QQ换行输入,账号密码空格隔开)。如果你只是测试一下,则放三两个QQ足矣;但如果你开多线程大规模抓取的话就要用多一点QQ号(thread_num_QQ的2~10倍),账号少容易被检测为异常行为。
  2. 进入 init_messages.py 进行爬虫参数的配置,例如线程数量的多少、设置爬哪个时间段的日志,哪个时间段的说说,爬多少个说说备份一次等等。
  3. 运行 launch.py 启动爬虫。

代码说明:

  1. mongodb用来存放数据,redis用来存放待爬QQ和Cookie。
  2. 爬虫之前使用的是BitVector去重,有一部分人反映经常会报错,所以现在使用基于Redis的位去重,内存占用不超过512M,能容纳45亿个QQ号瞬间去重,而且方便分布式扩展。
  3. 爬虫使用phantomJS模拟登陆QQ空间,有时候会出现验证码。我使用的是云打码(自行百度),准确率还是非常高的,QQ验证码是4位纯英文,5元可以识别1000个验证码。如果需要请自行去注册购买,将账号、密码、appkey填入 yundama.py,再将 public_methods.py 里的dama=False改成dama=True即可。
  4. 分布式。现在已经将种子队列和去重队列都放在了Redis上面,如果需要几台机器同时爬,只需要将代码复制一份到另外一台机子,将连Redis时的localhost改成同一台机器的IP即可。如果想要将爬下来的数据保存到同一台机,也只需要将连MongoDB时的localhost改成该机器的IP即可。
  5. 为了让程序不那么复杂难懂,此项目只用了多线程,即只用到了一个CPU。如果实际生产运行的话可以考虑将程序稍作修改,换成多进程+协程,或者异步。速度会快很多。
  6. 最后提醒一下,爬虫无非就是模仿人在浏览器上网的行为,你在浏览器上无法查看的信息爬虫一般也是无法抓取。所以,就不要再问我能不能破解别人相册的这种问题了,空间加了访问权限的也无法访问。程序输出的日志中2016-11-19 01:05:33.010000 failure:484237103 (None - http://user.qzone.qq.com/484237103)这种,一般就是无法访问的QQ。还有,我们是无法查看一个QQ的所有好友的,所以爬下来的好友信息也只是部分好友。爬虫不是黑客,希望理解。

结语:

  • 爬虫是偏后台型的任务,以抓取效率为主,并没有很好的用户界面,并且需要不断地维护。所以对于完全没有编程基础的人来说,可能会遇到各种各样的问题。此项目最初的目的是为大家提供QQ空间爬虫的一种架构,并不保证程序一直能跑。只要腾讯服务器端稍有变动,例如某一个链接变了,可能程序就抓不到数据了,此时程序也要相应地将链接换成新的,如果网页结构变了,解析规则也要相应地修改。
  • 有同学反映,爬QQ空间的很多都是学生想爬一些数据做统计研究的,本不是计算机专业,爬起来比较困难,希望有现成的数据出售。但是因为工作变动,其实今年3月份 程序开发完后我就没有跑过了,所以手上也没有数据。不过接下来我会开一两台机器跑这个爬虫,如果需要数据可以邮件联系我(bone_ace@163.com)。
  • 有什么问题请尽量留言,方便后来遇到同样问题的同学查看。

转载请注明出处,谢谢!(原文链接:http://blog.csdn.net/bone_ace/article/details/53213779)

QQ空间爬虫分享(2016年11月18日更新)相关推荐

  1. NOI系列活动标准竞赛环境(2016年11月08日更新)

    NOI系列活动标准竞赛环境(2016年11月08日更新) NOI系列活动标准竞赛环境更新如下: 分类 软件及版本 说明 启动/使用方法 系统软件 NOI Linux 1.4.1 操作系统 开机自动启动 ...

  2. 11月18日绝地求生服务器维护,绝地求生今天维护到什么时候结束? 绝地求生11月18日更新公告最新...

    中国小康网讯绝地求生今天维护到什么时候结束?通常情况下,绝地求生每周三都会例行维护一次,偶尔出现一些特殊情况也会推迟到周四或者周五更新,那么今天维护哪些内容,最快什么时候可以完成呢?还不清楚的玩家可以 ...

  3. 1613-3-傅溥衍 总结《2016年11月18日》【连续四十九天总结】

    标题:继承 关键词:this函数 内容:  A今日完成情况 1. this函数100% B具体内容 this函数 #include<iostream> using namespace st ...

  4. 新浪微博爬虫分享(2016年12月01日更新)

    前言: 上篇文章:<新浪微博爬虫分享(一天可抓取 1300 万条数据)>.<新浪微博分布式爬虫分享> Github地址:SinaSpider Q群讨论: 更新完<QQ空间 ...

  5. QQ空间爬虫分享(一天可抓取 400 万条数据)

    代码请移步GitHub:QQSpider 爬虫功能: QQSpider 使用广度优先策略爬取QQ空间中的个人信息.日志.说说.好友四个方面的信息,详细可见数据库说明. 判重使用"内存位&qu ...

  6. 如何利用大数据做金融风控? 原创 2016年11月24日 17:42:03 标签: 大数据 / 金融 / 风控 1594 导语:如何通过海量数据与欺诈风险进行博弈? 随着金融科技、科技金融等概念的

    如何利用大数据做金融风控? 原创 2016年11月24日 17:42:03 标签: 大数据 / 金融 / 风控 1594 导语:如何通过海量数据与欺诈风险进行博弈? 随着金融科技.科技金融等概念的热起 ...

  7. 2016年11月7日 星期一 --出埃及记 Exodus 19:23

    2016年11月7日 星期一 --出埃及记 Exodus 19:23 Moses said to the LORD, "The people cannot come up Mount Sin ...

  8. 2013年最后2个月的学习目标(成果)(上次更新2013年11月18日)

    1.2013年11月7日. a.新人毕业-老人跳槽 专栏. 简化标题,调整字体,增加和修改"相关阅读". 增加和修改Tag. b.新人毕业-老人跳槽 专栏. 删除3篇非原创文章. ...

  9. 双低教过最狠毒的招数实战情况(11月17日更新)

    实战, 招数, 双低 记得有一期节目,一个男低迷发短信问双低如何做一个合格的拆迁办,双低说听过最狠毒的办法,是和那个女孩子以及她的男朋友都做好朋友,三人一起行动.以后女孩子跟她男朋友闹矛盾了,就一定会 ...

  10. Windows8/Silverlight/WPF/WP7周学习导读(11月12日-11月18日)

    Windows8/Silverlight/WPF/WP7/HTML5周学习导读(11月12日-11月18日) 本周Windows 8开发学习资源更新 快速构建Windows 8风格应用25-数据绑定 ...

最新文章

  1. linux 内核 THIS_MODULE宏定义详解
  2. struts2 s:optiontransferselect 标签的使用
  3. tcp3次握手,https加密,ca认证
  4. LeetCode 1644. 二叉树的最近公共祖先 II
  5. 你们知道我们山东考生是怎么过来的么!山大校长写给你!
  6. IE下用iframe引入页面时出现SCRIPT5: 拒绝访问(access is denied)
  7. 网站类项目商业计划书
  8. 360浏览器显示服务器拒绝连接,360浏览器提示“您与此网站之间建立的连接不安全完美解决方法...
  9. java rhino 运行 js_深入浅出Rhino:Java与JS互操作
  10. “换头术”所引发的“长生不死”
  11. 魔高一丈道高一尺,开放接口安全性设计
  12. 宝塔面板nginx域名配置
  13. 数学建模 数理统计模型
  14. 微信自定义分享、二次分享解决方案
  15. Jupyter云服务器搭建指南
  16. 计算机视觉基础-图像处理-几何变换
  17. 李飞飞计算机视觉课CS231n第二天
  18. 汉唐盛世是今天中国的一面镜子
  19. FPGA IP核之RAM
  20. 代码审查“查”什么?

热门文章

  1. oracle 启动报错03113,Oracle 入门之Oracle启动报错“ORA-03113”
  2. 【保姆级手写理解——灰色预测理论以及python实现】
  3. 聊聊BA无标度网络以及其作用
  4. python合并大量ts文件_Python爬取网站m3u8视频,将ts解密成mp4,合并成整体视频
  5. 死亡细胞Mod制作教程
  6. MatLab imhist
  7. ansys通过扫掠(sweep)方法划分网格的方法
  8. 无人机——磁力计/电子罗盘 学习及校准
  9. [基于Python的微信公众号后台开发:1]配置对接阿里云服务器
  10. ACCESS数据库查询