QQSpider qq空间爬虫
代码请移步GitHub:QQSpider
爬虫功能:
QQSpider 使用广度优先策略爬取QQ空间中的个人信息、日志、说说、好友四个方面的信息,详细可见数据库说明。
判重使用“内存位”判重,理论上亿数量级的QQ可瞬间判重,内存只占用400M+。
爬虫速度可达到单机每天400万条数据以上(具体要考虑网速、网络带宽、稳定性等原因。我在学校是400万+,但在公司那边却只有六成的速度,普通家庭网络可能会更慢)。
环境、架构:
开发语言:Python2.7
开发环境:64位Windows8系统,4G内存,i7-3612QM处理器。
数据库:MongoDB 3.2.0
(Python编辑器:Pycharm 5.0.4;MongoDB管理工具:MongoBooster 1.1.1)
主要使用 requests 模块抓取,部分使用 BeautifulSoup 解析。
多线程使用 multiprocessing.dummy 。
抓取 Cookie 使用 selenium 和 PhantomJS 。
判重使用 BitVector 。
使用说明:
启动前配置:
MongoDB安装好 能启动即可,不需要配置。
Python需要安装以下模块(注意官方提供的模块是针对win32系统的,64位系统用户在使用某些模块的时候可能会出现问题,所以尽量先找64位模块,如果没有64的话再去安装32的资源):
requests、BeautifulSoup、multiprocessing、selenium、itertools、BitVector、pymongo
另外我们需要使用到 PhantomJS,这并不是 Python 的模块,而是一个exe可执行文件,我们可以利用它模拟浏览器去获取 Cookie 。使用方法:将 phantomjs-2.0.0-windows.zip 压缩包里面的 phantomjs.exe 放到你的 Python 目录下就行了。
启动程序:
- 进入 myQQ.txt 写入QQ账号和密码(用一个空格隔开,不同QQ换行输入),一般你开启几个QQ爬虫线程,就至少需要两倍数量的QQ用来登录,至少要轮着登录嘛。
- 进入 init_messages.py 进行爬虫参数的配置,例如线程数量的多少、设置爬哪个时间段的日志,哪个时间段的说说,爬多少个说说备份一次等等。
- 运行 init.py 文件开启爬虫项目。
- 爬虫开始之后首先根据 myQQ.txt 里面的QQ去获取 Cookie(以后登录的时候直接用已有的Cookie,就不需要每次都去拿Cookie了,遇到Cookie失效也会自动作相应的处理)。获取完Cookie后爬虫程序会去申请四百多兆的内存,申请的时候会占用两G左右的内存,大约五秒能完成申请,之后会掉回四百多M。
- 爬虫程序可以中途停止,下次可打开继续抓取。
运行截图:
说说数据:
日志数据:
好友关系数据:
个人信息数据:
数据库说明:
QQSpider主要爬取QQ用户的说说、日志、朋友关系、个人信息。
数据库分别设置 Mood、Blog、Friend、Information 四张表。
Mood 表:
_id:采用 “QQ_说说id” 的形式作为说说的唯一标识。
Co-oridinates:发说说时的定位坐标,调用地图API可直接查看具体方位,可识别到在哪一栋楼。
Comment:说说的评论数。
Like:说说的点赞数。
Mood_cont:说说内容。
PubTime:说说发表时间。
QQ:发此说说的QQ号。
Source:说说的根源(对于转发的说说),采用 “QQ_说说id” 的形式标识。
Tools:发说说的工具(手机类型或者平台)。
Transfer:说说的转发数。
URL:说说的链接地址。
isTransfered:此说说是否属于转发来的。
Blog 表:
_id:采用 “QQ_日志id” 的形式作为日志的唯一标识。
Blog_cont:日志内容。
Comment:日志的评论数。
Like:日志的点赞数。
PubTime:日志的发表时间。
QQ:发此日志的QQ号。
Share:日志的分享数。
Source:日志的根源(对于转发的日志),采用 “QQ_日志id” 的形式标识。
Title:日志的标题。
Transfer:日志的转发数。
URL:日志的链接地址。
isTransfered:此日志是否属于转发来的。
Friend 表:
_id:采用 QQ 作为唯一标识。
Num:此QQ的好友数(仅统计已抓取到的)。
Fx:朋友的QQ号,x代表第几位好友,x从1开始逐渐迭加。
Information 表:
_id:采用 QQ 作为唯一标识。
Age:年龄。
Birthday:出生日期。
Blog:已发表的日志数。
Blogs_WeGet:我们已抓取的日志数。
Blood_type:血型。
Career:职业。
Company:公司。
Company_address:公司详细地址。
Company_city:公司所在城市。
Company_country:公司所在国家。
Company_province:公司所在省份。
Constellation:星座。
CurrentTime:抓取当前信息的时间(不同时间信息会不同)。
FriendsNum:好友数(仅统计已抓取的)。
Gender:性别。
Hometown_city:故乡所在城市。
Hometown_country:故乡所在国家。
Hometown_province:故乡所在省份。
Living_city:居住的城市。
Living_country:居住的国家。
Living_province:居住的省份。
Marriage:婚姻状况。
Message:空间留言数。
Mood:已发表的说说数。
Mood_WeGet:我们已抓取的说说数。
PageView:空间总访问量。
Picture:已发表的照片数(包括相册里的照片和说说里的照片)。
结语:
自己一个人瞎搞了一个多星期,肯定还有很多地方不规范,不够优化。不足之处请多指出!
更新版本:《QQ空间爬虫分享(2016年11月18日更新)》。
转载请注明出处,谢谢!(原文链接:http://blog.csdn.net/bone_ace/article/details/50771839)
QQSpider qq空间爬虫相关推荐
- QQ空间爬虫分享(一天可抓取 400 万条数据)
代码请移步GitHub:QQSpider 爬虫功能: QQSpider 使用广度优先策略爬取QQ空间中的个人信息.日志.说说.好友四个方面的信息,详细可见数据库说明. 判重使用"内存位&qu ...
- QQ空间爬虫最新分享,一天 400 万条数据(附代码地址)
前言 本文为作者对其开源项目QQSpider的说明文档.主要替换了程序里一些不可用的链接,对登录时的验证码作了处理,对去重队列作了优化.并且可以非常简单地实现爬虫分布式扩展. Github项目名称:Q ...
- QQ空间爬虫--获取好友信息
QQ空间网页版:https://user.qzone.qq.com/ 登陆后,进入设置,有一个权限设置,设置"谁能看我的空间"为好友可见,然后构造爬虫. (1)获取Cookie 两 ...
- 可扩充的爬虫系统(新浪微博爬虫+QQ空间爬虫+全景网爬虫+环球网爬虫+新闻网爬虫)(图片爬虫系统)
源码日后博客分享 需求分析: 背景:机器视觉模型的训练需要大量的图像数据,而互联网上充斥着大量的图像数据,但是并不是所有数据能满足模型数据,这次我们需要满足人脸识别模型的要求,也就是需要大量含有人脸的 ...
- QQ空间(Qzone)爬虫,手机扫描登陆后即可并发下载相册的相片/视频,嗯~就是这么简单
qq-zone QQ空间爬虫,多协程并发下载相册的相片/视频 前言 QQ相册可以说是存放了好大一部分人生活的点点滴滴,近段时间发现QQ空间莫名会删除短视频或者相片,记得20年的时候也类似新闻报道过,为 ...
- QQ空间Python爬虫v2.0--点赞数据分析
记上一次v1.0的空间爬虫之后,准备再写一个爬虫分析本人说说的点赞情况 首先分析Json: 可以发现点赞的节点为data-->vFeeds(list)-->like-->likema ...
- Python爬虫实战,拉黑 QQ 空间屏蔽我的“大人物“
前景提要 最近发现有人QQ空间对我展开了屏蔽,咱们也不知道怎么惹到人家了,一气之下写了一个小爬虫看看到底谁把我屏蔽了.写小本本记下来!!! 代码在最尾部,需要请自取. 很多人学习python,不知道从 ...
- 爬虫(二)实现qq空间的自动评论和自动点赞
会抓个网页总感觉还不够,平时在空间里经常会遇到秒赞或者是秒评论的,现在也可以自己用爬虫在qq空间得到需要的信息,再向特定的url发送http请求就可以做到自动评论和点赞了,使用的cookie登录,好像 ...
- 爬虫实战--拉黑 QQ 空间屏蔽我的“大人物“
前景提要 最近发现有人QQ空间对我展开了屏蔽,咱们也不知道怎么惹到人家了,一气之下写了一个小爬虫看看到底谁把我屏蔽了.写小本本记下来!!! 代码在最尾部,需要请自取. 准备工作 python环境: p ...
最新文章
- PostgreSQL在何处处理 sql查询之三十九
- 关于python中文处理
- linux看目录用的哪个磁盘,linux查看目录大小及硬盘大小
- JavaWeb中验证码校验的功能实现
- WKWebview 的使用及坑
- Struts2国际化标签 i18n
- 如何才能在SQL查询器中使用语句查询出表的列名及数据类型(包括类型和长度)...
- 用putty中的pscp命令拷贝文件
- c++的类中,声明一个对象好还是用指针申请一块空间好?
- 亮度 调整_显示器对比度多少合适 显示器亮度多少合适【详细介绍】
- python 实现冒泡排序
- java缩小pdf,如何使用Java缩小PDF文档中的内容?
- 单片机基础:MCS-51单片机的硬件结构(附硬件结构框图)
- 《古诗词-劝学惜时大全》
- expect结合scp实现文件上传
- cad审图软件lisp_CAD审图标记最新版
- 55个美丽而独特的网站页眉设计欣赏
- openldap 集成 sssd
- Java Web应用开发_04javaWeb基础
- Go语言学习、时间和日期类型
热门文章
- Median Pyramid Hard题解
- Pointproofs 学习笔记3——代码解析
- 模电multisim实验
- super()函数的使用
- java创建response对象_创建一个HttpResponse对象
- COL FIRST_NAME FORMAT A15
- Day2 - Wanan 么么哒。
- QuickSDK-手游出海服务器接入技巧
- 宇视网络视频录像机“设备级”、“通道级”告警是什么意思
- 左手咖啡,右手小鹿茶,你真的看懂了瑞幸咖啡的“阳谋”?