QQ爬虫-爬取QQ空间

news/2024/7/6 0:14:40

背景:

在一篇个人博客看到了相关的爬虫的知识,个人比较有兴趣,就花了点时间研究了一下,主要通过好友空间的互动(相互访问量,点赞,评论,以及其他互动),以及好友之间聊天的活跃度,日常点赞量,好友之间的关系网等因素综合判断,在空间爬取方面(前提是好友对自己打开了空间权限),在通过一层递归,爬取好友的空间的最近几十条动态分析(据说也可以很多层递归吧),先实现自动登录,得到cookie_dict.txt,然后呢运行python文件得到两个文件comment.txt和like.txt等文本文件,分别代表空间权重和好友关系权重,然后最后根据这两个文件得到第三个文件relationship.txt,这就是最终的文件,然后把这个文件放到本地搭建的服务器上,在浏览器上打开PHP文件(浏览器在搭建本地服务器解析的情况下,可以解析PHP文件,当然PHP的内容嵌套在HTML之中可以更加形象),当然不能满足于一个txt文件,毕竟看起来很不方便,不直观,所以这里利用了一个百度开源的echarts,下载相关支持文件echarts.js放在项目文件里面,具体将在接下来阐述。大体背景就是这样,小白一枚,肯定有许多地方理解不周,欢迎指正。



放一张结果图开始吧


(为了保护个人隐私,打码保护,大体轮廓就是这样)


可以看出主要分为三个部分,第一是高中以及初中同学,第二部分是大学同学,第三部分是其他。







先看一下整体吧

目录:

1.用selenium实现QQ账号密码登录

2.使用多线程爬取QQ

3.使用echarts将数据可视化‍


准备阶段首先要配置环境

在这里介绍的是Windows10环境之下的配置

  1. win10下配置python+selenium

    为了方便起见,这里引用一篇csdn上的文章

    原文链接:https://blog.csdn.net/efly2333/article/details/80346426



配置好基本环境以后就要真正开始了


1.使用selenium登录获取好友列表

将这个保存为cookie.py,运行起来就能看到自动打开浏览器,然后会在目录下生成cookie_dict.txt的文件啦,接下来的访问都带上这个cookie就可以保持登录状态了(将cookie.py的chromedriver的地址修改成自己的(设置了环境变量的可不设置),账号密码按照提示修改后运行,生成cookie)



2.爬取空间以及其他

  1. 主要代码


运行spider.py爬取数据并初步分析将结果生成txt文件保存至本地

运行过程截图


3.现在已经得到了好友列表,接下来该访问每个好友的空间,爬取说说的点赞和评论情况

得到了两个txt文件

大致是这样的:

微雨微澜$|$微雨微澜

在路上$|$在路上

呛呛呛$|$呛呛呛

呛呛呛$|$呛呛呛

阿尔伴卑斯(【我的眼里&只有你~】€)$|$阿尔伴卑斯(【我的眼里&只有你~】€)

具体文件在文末会给出来,这里仅仅是大致部分,


4.然后可就是数据处理部分了

分析数据

得到了第二步的两个文件:comment.txt和like.txt

每个文件每一行都是这种格式: A$|$B

而我们想要的好友关系网就是数据结构中的图,我们这里的图采用三元组的思想来存储,即 节点a,节点b,权值

所以我们根据已经得到的两个文件在生成个 relationship.txt

里面存储数据的格式: A$|$B$|$value,这里value就是两者的关系值‍


采用list类型存储:如[ [a, b, value1], [c, d, value2]...... ]

这个命名为relationship,先得到这个数据,最后将这个变量循环写入relationship.txt即可、

得到数据的思想如下:

从comment.txt或者like.txt文件中读一行数据,A $|$ B, 那么遍历relationship,如果A,B没有出现同一个子list中,那么新生成一个子list来记录两者的关系值,如果同时出现在同一个子list,那么改变子list中的关系值,如果是从comment中读的数据那么关系+3,如果是在like中读的文件,那么关系+1‍




5.运行show_relation下的analysis.py,得到好友关系值文件

将show_relation中的relation.php按照其中提示修改第三步得到的txt文件的路径,再将整文件夹放置本地搭建的web服务器下,并在

http://echarts.baidu.com/download.html

下载echarts插件,放在该文件夹下在浏览器上打开relation.php‍



6.然后在自己搭建的web服务器下用浏览器打开该php文件

搭建本地服务器运用xampp开启本地服务,然后把项目文件传到xampp的htdocs文件,在浏览器上输入:http://localhost:80\项目文件名字

即可得到文章一开始的图了。



转载于:https://juejin.im/post/5beba8c351882551236e787b


http://lihuaxi.xjx100.cn/news/236792.html

相关文章

JPEG 白皮书: 建立媒体区块链的标准化框架

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 虚假新闻、版权侵犯、媒体取证、隐私和安全是数字媒体面临的新挑战。JPEG已经确定, 区块链技术作为一个技术组件, 在透明和可信的媒体交易中应对这些…

db2 基础语法

一、db2 基础 基本语法 注释:“--”(两个减号) 字符串连接:“||” 如set msg’aaaa’||’bbbb’,则msg为’aaaabbbb’ 字符串的引用:‘’(一定用单引号),如果需要输入单引…

揭秘vue——vue-cli3全面配置

★ vue-cli3 全面配置 ★ Nuxt.js 全面配置 创建项目 配置环境变量 通过在package.json里的scripts配置项中添加--mode xxx来选择不同环境 在项目根目录中新建.env, .env.production, .env.analyz等文件 只有以 VUE_APP_ 开头的变量会被 webpack.DefinePlugin 静态嵌入到客户端…

OBS源代码阅读笔记

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 obs配置文件加载:bool OBSBasic::InitBasicConfig(); OBS认证信息加载,貌似还没有实现吗? void Auth::Load(){ …

设计模式之禅笔记

2019独角兽企业重金招聘Python工程师标准>>> 1.设计原则 1)单一职责原则 There should never be more than one reason for a class to change (就一个类而言,应该只有一个引起它变化的原因) 用于控制类的粒度大小,防止类过于复杂…

提取Jar2Exe源代码,JavaAgent监控法

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 最近遇见一个麻烦,明明知道是java写的小软件,但是打包成了exe,木得办法,之前打包的都有缓存能在TEMP…

Aria2打造属于自己的下载神器

请关注微信公众号( ?sharingplus) 我使用Aria2差不多已经2年了。在这段时间使用很多下载工具,最开始使用的是迅雷极速版 、后面各种原因不好使了。Free Download Manager、uTorrent、qBittorrent、BitComet、IDM等等全部折腾了一遍。各有千秋,在上面中使…

以太坊官网

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 以太坊(Ethereum)以基金会为核心,形成了一个庞大的社区和生态。以太坊官网主要分为四类:以太坊基金会…