关于

Edit by equationl

优先在 码云 上更新

该项目修改自 xjr7670 的 QQzone_crawler

原作者说明: QQ空间动态爬虫

修改了什么?

爬取完整的评论列表

爬取点赞的人

爬取说说的浏览量等更多信息

简化运行操作,默认不保存元数据,直接整理后存进数据库(有需要更多数据或元数据的请自行修改)

快速开始

将 cookie 存入 cookie_file 参照一下两种方式运行

方法1 遍历爬取所有好友的说说

python main.py

方法2 爬取指定一个好友的说说

python main.py qq_number

如:

python main.py 123456

数据库结构

默认将数据储存于 ./moods.db

表 moods 说说相关数据

id integer primary key Autoincrement not null

qq int not null 说说所属qq

content text null 说说内容

comment_count int not null 说说的回复数量

ctime int not null 说说的发表时间

phone text null 发表说说时的手机标志

image text null 说说配图地址

locate text null 说说定位信息

tid text not null 说说id

like int not null 说说的点赞数

visit int not null 说说的浏览量

retweet int not null 说说的转发量

表 likes 点赞用户数据

id integer primary key Autoincrement not null

qq int not null 点赞者qq

tid text not null 点赞所属说说id

address text null 点赞者地址

constellation text null 点赞者星座

gender text null 点赞者性别

nick text not null 点赞者昵称

表 comments 回复相关数据

id integer primary key Autoincrement not null

qq int not null 回复者qq号

tid text not null 回复所属说说

content text not null 回复内容

ctime int not null 回复时间

nick text not null 回复者昵称

father int null 二级回复的上级id

cid int not null 回复id(不唯一)

注意事项

程序运行日志为 ./crawler_log.log

获取元数据或更多数据请修改 ./get_full_data.py 文件中的 StartGetFullData() 类的 get_count()、get_likes()、get_comment() 方法

默认爬取延时为 20s ,原作者给的 5s 在其他接口都不会被反爬,但是获取点赞列表容易 403 。需要更改延时的请在 ./get_moods.py 中修改

以下为原项目信息

QQzone_crawler

QQ 空间动态爬虫,利用cookie登录获取所有可访问好友空间的动态并保存到本地

需要先安装第三方库 requests

本程序使用的是python3.5,在Linux下完成。由于自己的电脑上同时有python2.7和python3.5,默认是python2。所以在每个程序头部我写的都是

#!/usr/bin/env python3

由于程序使用from urllib import parse,利用parse模块来构造URL,所以如果使用python2的朋友需要在对应的地方修改,此外print语句也是要相应修改的。

方程注:1.已测试 windows 能完美运行。2.程序头在原作者的更新中已经被去掉,使用 python2.x 运行只需注意 print 语句和 parse 的修改

各程序文件说明

main.py: 程序主入口,运行时执行python3 main.py即可

get_my_friends.py: 用于从QQ空间服务器获取包括自己的QQ好友信息的文件,其中包括他们的QQ号和名称(此处是备注名),保存到本地,每个文件中保存有50个。每完成一个文件请求后,会暂停5秒。在程序运行时,会自动将这些文件保存在friends文件夹中。

get_qq_number.py: 用于从上一步保存好的文件中提取出所有好友的QQ号和名称,QQ号和名称以字典形式保存,再以它们组成的字典为作元素构造列表,再保存到本地,文件名为qqnumber.inc

get_moods.py: 用于从QQ空间服务器获取包含每个好友空间发表的说说的文件,其中包含每个说说的发表时间、内容、地点信息、手机信息等,保存到本地,每个文件中保存20条信息。每完成一个文件请求后,会暂停5秒。在程序运行时,会自动将这些文件保存在mood_result文件夹中。

cookie_file: 用于放置自己登录QQ空间后得到的cookie。从浏览器中复制出来放在这个文件内即可,在负责处理cookie的函数中有对应的处理代码来处理换行符,但还是希望不要出现多行,末尾也不要有多余的空行。但要注意的是,这个文件里面只能放一个cookie。它的作用是方便设置cookie,而不是用于反反爬虫。 如果不知道怎么获取cookie,请看这里

可视化部分

operate_table.py:这个程序创建用于保存说说信息的数据库。里面写了创建数据表和删除数据表的两个函数。需要单独执行。

创建数据表:

python3 operate_table.py create_table

删除数据表:

python3 operate_table.py drop_table

方程注:数据库操作已写入 main.py 无需使用者自行运行

get_moods_detail.py:程序在执行完get_moods.py中的功能之后,会把包含有每个好友的说说文件保存到本地。而这个程序就是用于把说说信息从这些文件里面提取出来,放到sqlite数据库里面去的。这个程序需要单独执行。执行完后在当前目录下会生成moods.sqlite数据库文件。本程序需要在成功执行operate_table.py程序创建数据表后执行。

get_single_report:这个是个Web程序,用于在浏览器中查看指定好友说说的简单报告。也需要单独执行,并且必须要在执行完get_moods_details.py文件以生成moods.sqlite数据库文件,这个web程序才可以正确执行。直接执行本文件夹中的index.py即可。需要先安装flask、pandas、sqlalchemy这3个库。执行index.py后,在浏览器中输入 http://localhost:5000/qqnum=QQ号码 就可以查看到结果了

方程注:1.已修改为请求完成后直接解析数据并储存至数据库,无需手动运行 get_moods_detail.py 2.已删除 get_single_report 相关文件,有需要的请自行前往原项目拷贝

注意事项

获取QQ好友信息是间接获取的。需要先在QQ空间中将自己空间的访问权限先设置为仅QQ好友可访问。然后程序才能够正常运行

最终获取到的各好友的空间动态会以文件形式保存在以其QQ号为名的文件夹当中(它们又位于mood_result文件夹中)。它们是由QQ空间服务器返回的文件,还需要自行进行处理才能得到自己想要的信息。其实内容的格式已经很接近JSON了

2.1 更新后的版本,可以通过依次执行operate_table.py、get_moods_detail.py两个程序来把动态保存在sqlite数据库文件中

在get_moods_detail.py程序中,我只提取了当时所需要的部分信息,而不是与说说相关的所有信息。有需要其它信息的还要自己去operate_table.py中修改创建数据表的函数以及在get_moods_detail.py程序中修改提取说说信息的函数

程序开始运行后,会产生一个日志文件crawler_log.log,它记录了程序运行期间的一些必要的信息,比如什么时候抓取到了哪个号码的空间,这个空间能不能被访问等

在创建了数据库表后,如果有需要重新执行提取动态插入数据库表的操作的话,建议先删除原表,再执行提取

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

  1. python如何获取网络上的图片并将其保存在本地

    之前写爬虫大多是爬网页中的url,然后将url保存下来就可以了,倒还没有想过要获取真的图片到本地. 网络上有很多方法,但是很多都是本地,或者其他: 方法一:使用urllib.urlretrieve() ...

  2. python利用cookie登录百度的代码_使用 cookie 登录百度

    cookies2.txt 为存放 cookie 字符串的文件. cookie 字符串获取方式 1. 可以通过手动的方式去取,比如登录之后在 console 里面执行 document.cookie 即 ...

  3. QQ空间动态内容,好友信息,点赞爬虫脚本

    一.安装基础的软件包: 1.准备好火狐浏览器,并下载geckodriver,将geckodriver加入到环境变量:下载geckodriver的地址:https://pan.baidu.com/s/1 ...

  4. 微信的秘密-python可视化微信好友信息

    记得2016年第一次开通微信的时候,我以及周围的大多数人还是重度的QQ用户,当时只是跟风开通了一下,也没觉得会改变什么.没想到才两年过去,我已经忘记了QQ的存在,每天起来第一件事就是查看微信,睡觉前也 ...

  5. 用js获取QQ好友信息和QQ群信息

    获取QQ好友 网页登入QQ邮箱,https://mail.qq.com,登入后点击写信,然后在右侧有个通讯录,如果有显示最近联系人的列表存在,一定要点一下清空.然后让分组列表展开不然代码无法食用. 按 ...

  6. Java登陆3GQQ以及获取好友信息与好友聊天的简单实现

    2019独角兽企业重金招聘Python工程师标准>>> 主要是通过java实现3GQQ的登陆,抓取好友信息(昵称,QQ号等等),以及获取聊天信息等等. 代码的灵感来自 @水之子哈哈 ...

  7. QQ用户信息管理系统

    QQ用户管理系统 C# SQL server 学习目标: 1.掌握C#语法 2.掌握类.对象和方法的综合运用 3.掌握数据库.表的创建 4.掌握使用SQL语句操作数据 5.掌握使用ADO.NET操作数 ...

  8. Cookie登录爬取实战:Python 利用urllib库的cookie实现网站登录并抓取

    1 环境:Python 3 +urllib库 实战网站:http://www.mjzcnd.com/  梅江之春论坛网站 2 背景: 现在许多网站都需要登录后才能访问某个页面,在登陆之前,我们是没有权 ...

  9. 爬虫实战-python爬取QQ群好友信息

    自从开始学习爬虫后,总是无法控制那一颗躁动的心.每天总是想要爬点什么,爬过电影.爬过电影影评.爬过图片(美女图).爬过视频链接,从最初的简单解析网页到模拟登陆再到异步加载,现在看到一个网页最先想的就是 ...

最新文章

  1. Mars说光场(4)— 光场显示
  2. fastdfs安装_用asp.net core结合fastdfs打造分布式文件存储系统
  3. shell中各种美元符号组合
  4. 变,从南到北,从北到南...
  5. td里面字体大小怎么改_教你王者荣耀改战区
  6. 后台接收数组_腾讯C++后台开发面试笔试知识点参考笔记
  7. update core.php,WordPress更新失败-这通常是由于文件权限不一致所致。:wp-admin/includes/update-core.php...
  8. 【毕业设计】jsp+sql毕业生招聘系统毕业设计(系统+论文+英文文献+综合材料)
  9. 是时候开始好好考虑自己的职业定位了
  10. 物联网规划元旦前后出台 定十领域
  11. JavaScript-197:模拟京东快递单号查询案例
  12. 电子计算机off键是什么意思,off键是什么意思
  13. kuangbin 最小生成树专题 - ZOJ - 1586 QS Network (朴素 Prim算法 模板题)
  14. 【Python 日志】
  15. codeforces202A. Mafia【二分】
  16. 在同一个WiFi下的两台电脑,使用webService 和 axis 实现接口调用
  17. 【深度学习】深度学习中模型计算量(FLOPs)和参数量(Params)等的理解以及四种在python应用的计算方法总结
  18. 定积分在几何上的应用
  19. 前端对浏览器性能优化
  20. matlab实现动态规划算法

热门文章

  1. Docker 部署grafana集成腾讯云监控插件,监控腾讯云资源
  2. 品牌宣传片拍摄要点包含哪些内容?
  3. oracle全库收集统计信息,Oracle快速收集全库统计信息
  4. 推荐 windows xp sp3 OEM+VOL 28合1
  5. 数组的最长递减子序列java_最长递增/递减子序列
  6. UDP的报文结构和注意事项
  7. java 重试_Java实现几种简单的重试机制
  8. TopoJSON数据转换
  9. Modbus转Profinet网关连接海利普变频器配置案例
  10. linux 系统环境配置文件