Skip to content

Liu98Fan/qqzone_spider

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 

Repository files navigation

本人python经验不足,大一到大三多数在写java(目前大三),所以此项目的结构比较混乱(其实第一版本是大二的时候写的,在前面的qqzone仓库,那个更惨。。。),但是勉强实现了爬取10W+条说说的功能,且具有一点的错误处理机制。欢迎大佬指正不足,本人QQ214704958

项目依赖

  • configparser
  • selenium
  • pymysql

配置文件

初始化Spider的时候要传入一个配置文件的地址 例如:

if __name__ == "__main__":
    
    dirPath = 'D:\\spider\\qqzone\\userinfo.ini'
    spider = Spider(dirPath)

配置文件格式如下:

[my_info]
number = QQ号
password = 密码
[db_info]
url = 数据库url
username = 数据库账号
password = 密码
name = 数据库名称

具体内容

  • Spider.py 爬虫主类,包含个人信息,requests,driver,数据库连接等
  • Dao.py 与数据库交互用,里面包含所需的所有数据库操作方法
  • GetFriends.py 获取好友方法,目前只实现了根据关注度获取前200个好友,支持json文件存储和数据库存储
  • GetEmotions.py 爬取指定QQ的全部说说方法
  • GetFreiendEmotion.py 爬取指定QQ的好友说说方法,支持json文件存储和数据库存储,支持断点继续(比较low)
  • ErroTest.py 错误测试用

链接分析

1、获取好友

按照空间的亲密度查找前200名好友的链接

https://user.qzone.qq.com/proxy/domain/r.qzone.qq.com/cgi-bin/tfriend/friend_ship_manager.cgi?
uin=******& #我的QQ
do=1& #我在意谁  谁在意我的时候是2
rd=0.2158404861506087& #不知道干啥的,可以不加
fupdate=1& #默认为1
clean=1& #谁在意我的时候为0
g_tk=**********& 已拥有
qzonetoken=**********& #已拥有

通过以上获取的数据是:

_Callback({
	"code":0,
	"subcode":0,
	"message":"",
	"default":0,
	"data":
    {
        "items_list":[{"uin":**********, QQ号
            "name":"********", 备注
            "index":1, 排名
            "chang_pos":0, **
            "score":92, 亲密度得分
            "special_flag":"0", 特别关心标志
            "uncare_flag":"0", **
            "img":"**********"} 头像,{...},{...}{...}],
        "not_relation":[],
        "dirty_rate":0,
        "dirty_list":[]}
    }
);

原则上可以搞定200个好友的QQ

2、获取说说

获取链接为:

url='https://h5.qzone.qq.com/proxy/domain/taotao.qq.com/cgi-bin/emotion_cgi_msglist_v6?'
    params = {
        "sort": 0,
        "ftype": 0,
        "num": 20,
        "cgi_host": "http://taotao.qq.com/cgi-bin/emotion_cgi_msglist_v6",
        "replynum": 100,
        "callback": "_preloadCallback",
        "code_version": 1,
        "inCharset": "utf-8",
        "outCharset": "utf-8",
        "notice": 0,
        "format": "jsonp",
        "need_private_comment": 1,
        "g_tk": spider.g_tk,
        "qzonetoken": spider.qztoken,
        "uin": qq, 要获取的qq号
        "pos": pos 要获取的起始number
    }

返回的是jsonp格式

About

爬取空间信息用于复杂网络研究

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages