背景:
在一篇个人博客看到了相关的爬虫的知识,个人比较有兴趣,就花了点时间研究了一下,主要通过好友空间的互动(相互访问量,点赞,评论,以及其他互动),以及好友之间聊天的活跃度,日常点赞量,好友之间的关系网等因素综合判断,在空间爬取方面(前提是好友对自己打开了空间权限),在通过一层递归,爬取好友的空间的最近几十条动态分析(据说也可以很多层递归吧),先实现自动登录,得到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环境之下的配置
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.爬取空间以及其他
主要代码
运行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\项目文件名字
即可得到文章一开始的图了。