QQ空间爬虫最新分享,一天 400 万条数据

前言

本文为作者对其开源项目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。

有什么问题请尽量留言,方便后来遇到同样问题的同学查看。

专栏作者简介

九茶

Python工程师,目前居于广州。Github知名开源爬虫QQSpiderSinaSpider作者,经常会在CSDN上分享一些爬虫、数据等福利。爬过的网站有 QQ空间、新浪微博、Facebook、Twitter、WooYun、Github、SearchCode、CSDN、博客园、天猫、大众点评、图吧 网、域名与IP数据、证券投资数据、中国土地数据、某些政府网站等。 除了爬虫领域之外,还会分享一些Python小应用(例如Python+PhantomJS批量注册账号,登录等),接下来在Python中文社区还会分享一些Python在大数据运算(ES、Spark)和数据挖掘方面的文章。

CSDN:http://blog.csdn.net/bone_ace

Github:https://github.com/liuxingming

原文发布于微信公众号 - Python中文社区(python-china)

原文发表时间:2016-11-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏阮一峰的网络日志

双因素认证(2FA)教程

所谓认证(authentication)就是确认用户的身份,是网站登录必不可少的步骤。 密码是最常见的认证方法,但是不安全,容易泄露和冒充。 ? 越来越多的地方...

49310
来自专栏腾讯技术工程官方号的专栏

你不知道的Android SDK安全测试

image.png 作者介绍:anglia,2014年加入腾讯TEG,一直致力于信鸽和MTA两款产品的移动终端 引言 作为Android手机用户中的一枚残粉...

2885
来自专栏FreeBuf

一大波iCloud钓鱼网站来袭 果粉们会分辨吗?

国外的FireEye实验室有一套自动化系统,这套系统能够主动侦测最新注册的恶意域名。所谓的恶意域名,绝大部分都是伪装成很多人知道的常用域名,以此来达到“恶意”的...

3635
来自专栏互联网杂技

从输入URL到页面加载完的过程中都发生了什么事情

一个HTTP请求的过程 为了简化我们先从一个HTTP请求开始,简要介绍一下一个HTTP求情的网络传输过程,也就是所谓的“从输入 URL 到页面下载完的过程中都发...

36510
来自专栏北京马哥教育

Hadoop运维记录 | Zeppelin启用https和Hack内核的过程

本文是在工作过程中讲Zeppelin启用https过程和Hack内核以满足客户需求的记录。 原因是这客户很有意思,该客户中国分公司的人为了验证内网安全性,从国...

3819
来自专栏FreeBuf

浅谈开源web程序后台的安全性

一、前言 不知怎的最近甚是思念校园生活,思念食堂的炒饭。那时会去各种安全bbs上刷刷帖子,喜欢看别人写的一些关于安全技巧或经验的总结;那时BBS上很多文...

2109
来自专栏逸鹏说道

探索ASP.NET MVC5系列之~~~3.视图篇(下)---包含常用表单和暴力解猜防御

其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/d...

4315
来自专栏FreeBuf

记一次服务器被入侵的调查取证

*本文原创作者:fish1983,本文属FreeBuf原创奖励计划,未经许可禁止转载

9221
来自专栏信安之路

轻松理解什么是 webshell

学安全基础很重要,安全中有很多的特有的关键字,理解这些关键字至关重要,今天给大家分享一下我对于 webshell 的理解。

6450
来自专栏Java帮帮-微信公众号-技术文章全总结

在Windows上用Java代码模仿破解WIFI密码【大牛经验】

本文纯属技术探索,与真正的破解还有很大差距,请广大网友切勿利用本文内容做出任何危害网络安全的行为。若有违法行为,均与本人无关。

7842

扫码关注云+社区

领取腾讯云代金券