前言

本文为作者对其开源项目QQSpider的说明文档。主要替换了程序里一些不可用的链接,对登录时的验证码作了处理,对去重队列作了优化。并且可以非常简单地实现爬虫分布式扩展。

Github项目名称:QQSpider

使用说明

1、启动前配置:

需要安装的软件:python、Redis、MongoDB(Redis和MongoDB都是NoSQL,服务启动后能连接上就行,不需要建表什么的)。

需要安装的Python模块:requests、BeautifulSoup、multiprocessing、selenium、itertools、redis、pymongo。

我们登陆QQ要使用到phantomJS(下载地址:http://phantomjs.org/download.html),下载完将里面的phantomjs.exe解压到python目录下即可。

2、启动程序:

进入 myQQ.txt 写入QQ账号和密码(不同QQ换行输入,账号密码空格隔开)。如果你只是测试一下,则放三两个QQ足矣;但如果你开多线程大规模抓取的话就要用多一点QQ号(thread_num_QQ的2~10倍),账号少容易被检测为异常行为。

进入 init_messages.py进行爬虫参数的配置,例如线程数量的多少、设置爬哪个时间段的日志,哪个时间段的说说,爬多少个说说备份一次等等。

运行 launch.py 启动爬虫。

代码说明

mongodb用来存放数据,redis用来存放待爬QQ和Cookie。

爬虫之前使用的是BitVector去重,有一部分人反映经常会报错,所以现在使用基于Redis的去重,内存占用不超过512M,能容纳45亿个QQ号瞬间去重,而且方便分布式扩展。

爬虫使用phantomJS模拟登陆QQ空间,有时候会出现验证码。我使用的是云打码(自行百度),准确率还是非常高的,QQ验证码是4位纯英文,5元可以识别1000个验证码。如果需要请自行去注册购买,将账号、密码、appkey填入 yundama.py,再将public_methods.py里的dama=False改成dama=True即可。

分布式。现在已经将种子队列和去重队列都放在了Redis上面,如果需要几台机器同时爬,只需要将代码复制一份到另外一台机子,将连Redis时的localhost改成同一台机器的IP即可。如果想要将爬下来的数据保存到同一台机,也只需要将连MongoDB时的localhost改成该机器的IP即可。

为了让程序不那么复杂难懂,此项目只用了多线程,即只用到了一个CPU。如果实际生产运行的话可以考虑将程序稍作修改,换成多进程+协程,或者异步。速度会快很多。

最后提醒一下,爬虫无非就是模仿人在浏览器上网的行为,你在浏览器上无法查看的信息爬虫一般也是无法抓取。所以,就不要再问我能不能破解别人相册的这种问题了,空间加了访问权限的也无法访问。程序输出的日志中2016-11-19 01:05:33.010000 failure:484237103 (None - http://user.qzone.qq.com/484237103)这种,一般就是无法访问的QQ。还有,我们是无法查看一个QQ的所有好友的,所以爬下来的好友信息也只是部分好友。爬虫不是黑客,希望理解。

结语

爬虫是偏后台型的任务,以抓取效率为主,并没有很好的用户界面,并且需要不断地维护。所以对于完全没有编程基础的人来说,可能会遇到各种各样的问题。此项目最初的目的是为大家提供QQ空间爬虫的一种架构,并不保证程序一直能跑。只要腾讯服务器端稍有变动,例如某一个链接变了,可能程序就抓不到数据了,此时程序也要相应地将链接换成新的,如果网页结构变了,解析规则也要相应地修改。需要样本数据用于科学研究的可以邮件联系作者邮箱:bone_ace@163.com。

原文发布时间为:2016-11-25
本文作者:九茶
本文来自云栖社区合作伙伴“Python中文社区”,了解相关信息可以关注“Python中文社区”微信公众号

QQ空间爬虫最新分享,一天 400 万条数据(附代码地址)相关推荐

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

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

  2. QQSpider qq空间爬虫

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

  3. EDG夺冠,用爬虫+数据分析+自然语言处理(情感分析)+数据可视化分析3万条数据:粉丝都疯了(唯一原创)

    原创不易,本文禁止抄袭.转载,违权必究! 目录 一.EDG夺冠信息 二.实战目标 2.1 网络爬虫 2.2 数据可视化(词云图) 2.3 自然语言处理(情感分析) 三.bilibili接口分析 四.编 ...

  4. Web网页如何实现QQ好友,QQ空间,微博分享

    前段时间写了一个个人博客项目,其中博客想做一下可以一键分享给好友,这里做一下整理. QQ好友,QQ空间,微博分享实现起来都是差不多的,就是请求地址需要改一下,参数基本都是一样的. 分享参数信息 /*获 ...

  5. 知乎爬虫(scrapy默认配置下单机1小时可爬取60多万条数据)

    知乎爬虫(scrapy默认配置下单机1小时可爬取60多万条数据) 版本:1.0 作者: AlexTan CSDN: http://blog.csdn.net/alextan_ e-mail: alex ...

  6. (转)Python网络爬虫实战:世纪佳缘爬取近6万条数据

    又是一年双十一了,不知道从什么时候开始,双十一从"光棍节"变成了"双十一购物狂欢节",最后一个属于单身狗的节日也成功被攻陷,成为了情侣们送礼物秀恩爱的节日. 翻 ...

  7. web端网页qq好友 qq空间 微信 微博分享

    1.分享给qq好友 window.open("http://connect.qq.com/widget/shareqq/index.html?url=" +encodeURICom ...

  8. 友盟社会化分享 QQ空间不显示分享的图片 (已解决)

    最近做项目用到了友盟的社会化分享,期间遇到了一个问题,分享到QQ空间的图片不显示,其他的分享都正常.也许是直接分享出去的图片URL被屏蔽了,所以我做了如下操作: /*** 根据图片的url路径获得Bi ...

  9. 分享到qq空间android,android 分享到QQ空间的全部操作

    android 分享到QQ空间的所有操作 http://wiki.open.qq.com/wiki/mobile/SDK下载 android:name="com.tencent.connec ...

最新文章

  1. Selenium 2.0的由来及设计架构(二)
  2. openresty开发系列40--nginx+lua实现获取客户端ip所在的国家信息
  3. Oracle存在修改,不存在插入记录
  4. java 排名相同_Java程序员十年面试经验,助你成为offer收割机
  5. ubuntu设置静态ip
  6. Web前端笔记-element ui中table中某列添加a便签进行跳转
  7. 通俗易懂:说说 Python 里的线程安全、原子操作
  8. 多数据源报表解析之简单多源报表
  9. k8s-controller manager原理分析
  10. linux替换字符串 正则,Linux 字符串操作-裁剪和正则替换
  11. Spring MVC请求-响应流
  12. java如何获取scanner_java – 使用Scanner获取用户输入
  13. PAIP.ASP技术手册
  14. 20145322何志威 Exp8 Web基础
  15. 强哥日常高效工作流骨灰级玩家培训课程
  16. 要做就做明链,这才是堂堂正正的优化之路,不要走捷径
  17. 闭环系统零、极点位置对时间响应性能指标的影响
  18. 多米诺骨牌最长牌阵java_棋盘的完美覆盖(多米诺骨牌完美覆盖)幻方(魔方阵)...
  19. Havel-Hakimi定理(判断一个度序列是否可图)
  20. Eclipse插件配置

热门文章

  1. 常量表达式(const expression)
  2. error C2057: 应输入常量表达式
  3. 制作U盘启动盘,CentOS系统安装
  4. Python--安装pyecharts包,anaconda环境下如何正确安装神奇可视化pyecharts包[安装的那些事儿]
  5. Vitamio 初步使用
  6. Sentinel计算QPS限流算法
  7. 不再饥饿营销 苹果公司一改中国内地销售策略
  8. 《京韵大鼓——祭晴雯》(骆玉笙)(唱词文本)
  9. 研大考研——医学考研集训第一营
  10. 2014年中国市场智能手机销量排行榜,前十国外品牌只剩两