#Python爬虫QQ空间好友说说

先看效果:

(轻微马赛克)

我的好友大概接近一百人,这里总共有3.5w+条数据

##具体步骤: ####**问题分析:** - QQ空间是动态网页,那么直接获得网页源码就没戏了,只能通过模拟浏览器 - 访问QQ空间之前需要登陆 - 各个好友的动态访问前,需要获得好友列表 - 爬虫技术不是黑客技术,访问好友的QQ空间需要获得权限 ####**难点分析:** - 好友列表的获取 - 访问请求中g_qzonetoken 和 gtk的获取 - 解析QQ好友的说说 **获取g_tk:**http://blog.csdn.net/vision_tung/article/details/78888695 **获取g_qzonetoken:**http://blog.csdn.net/vision_tung/article/details/78888639 完整代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import re   def startSpider():driver = webdriver.Chrome(executable_path=r'C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\Scripts\phantomjs-2.1.1-windows\phantomjs-2.1.1-windows\bin\chromedriver.exe') #这个是chormedriver的地址driver.get('https://qzone.qq.com/')driver.switch_to.frame('login_frame')driver.find_element_by_id('switcher_plogin').click()driver.find_element_by_id('u').clear()driver.find_element_by_id('u').send_keys('xxxxx')  #这里填写你的QQ号driver.find_element_by_id('p').clear()driver.find_element_by_id('p').send_keys('xxxxx')  #这里填写你的QQ密码driver.find_element_by_id('login_button').click()time.sleep(2)#f = open('E:/QQ.csv','w',encoding='utf-8') #---------------获得g_qzonetoken 和 gtk'''注意!!!!!!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!--Vision_Tung2018年10月25日'''gtk=getGTK(cookie)#通过getGTK函数计算gtkprint(g_qzonetoken)print(gtk)#--------------获得好友列表   注意下面的链接'''注意!!!!!!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!--Vision_Tung2018年10月25日'''begin = 0last_source = ""tag = 1first = 0firstTime=""for key in numList.keys():QQnum = key QQname = numList[QQnum]begin = 0first = 0while tag==1 :#-------------进入好友说说页面'''注意!!!!!!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!--Vision_Tung2018年10月25日''''''注意:爬虫不是黑客!!!!还是要有权限的!!!'''#检测是否没有权限访问'''注意!!!!!!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!--Vision_Tung2018年10月25日'''#解析JSON#webDriver没有现成的JSON解析器,所以采用获取源码的方式,然后使用正则表达式获取具体细节'''注意!!!!!!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!--Vision_Tung2018年10月25日'''#说说动态分4种:1、文字说说(或带有配图的文字说说)#              2、只有图片的说说#              3、转发,并配有文字#              4、转发,不配文字for text in msg_list_json:# 1、先检查说说,用户是否发送了文字,如果没有文字,正则表达式匹配无效'''注意!!!!!!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!--Vision_Tung2018年10月25日'''# 2、如果作者说说有文字,那么检查是否有转发内容'''注意!!!!!!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!--Vision_Tung2018年10月25日'''#合并发送内容 格式:评论+转发内容if msg_time2!=[]:msg = msg +"  转发内容:"+str(msg_time2[0][0])else:# 3、说说内容为空,检查是否为 =>只有图片的说说 or 转发,不配文字#获取正文发送时间 (发送时间分为:正文发送时间 or 转发时间)abtract_pattern  =  re.compile('"conlist":null,"content":"","createTime":"(.*?)",',re.S) msgNull_time = re.findall(abtract_pattern,str(text))if msgNull_time!=[]:#如果有正文发送时间,那么就是这条说说仅含有图片  =>只有图片的说说msg = "图片"sendTime = str(msgNull_time[0])else:#如果没有正文发送时间,那么就是说这条说为 =>转发,不配文字abtract_pattern  =  re.compile('\}\],"content":"(.*?)"},"rt_createTime":"(.*?)","',re.S)msg_time = re.findall(abtract_pattern,str(text))msg ="  转发内容:"+str(msg_time[0][0])sendTime = str(msg_time[0][1])# f.write('{},{},{},{}\n'.format(str(QQname),str(QQnum),sendTime,msg))print(str(QQname)+" : "+str(QQnum)+" : "+sendTime+" : "+msg)begin =  begin + 40        def getGTK(cookie):'''注意!!!!!!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!此块细节已影藏!!!!--Vision_Tung2018年10月25日'''
startSpider()
print("OK")

####总结分析:

  • 获取好友动态页面时,会报错,目前无法解决,本人采用异常直接跳过,导致好友动态丢失,但丢失率低,差强人意
  • 好友动态页面跨度大(40条/次),可能导致信息丢失,丢失率未统计

####日后改进 计划:

  • 实现实时更新
  • 获得图片、位置等丰富信息
  • 采用合适的JSON解析方法
  • 降低对内存消耗
  • 多线程加速

注:如有不足,请斧正。

Python爬虫QQ空间好友说说相关推荐

  1. python爬取加密qq空间_使用python+selenium爬取qq空间好友动态

    使用python+selenium爬取qq空间好友动态 分析过程如下: 要想用selenium登陆qq空间,必须点击账号密码登陆按钮然后再填写账号密码登陆. 1.PNG 点击账号密码按钮后跳转到如下页 ...

  2. python + selenium +chrome爬取qq空间好友说说并存入mongodb数据库

    python + selenium +chrome爬取qq空间好友说说并存入mongodb数据库 准备阶段 在正式开始在前需要先准备好做爬虫的工具,本例使用chrome无头浏览器进行爬取工作,也可使用 ...

  3. python爬取好友qq空间_python + selenium +chrome爬取qq空间好友说说并存入mongodb数据库...

    title: python + selenium +chrome爬取qq空间好友说说并存入mongodb数据库 准备阶段 在正式开始在前需要先准备好做爬虫的工具,本例使用chrome无头浏览器进行爬取 ...

  4. python爬取陌生人的qq空间_Python爬取QQ空间好友说说并生成词云(超详细)

    前言 先看效果图: 思路 1.确认访问的URL 2.模拟登录你的QQ号 3.判断好友空间是否加了权限,切换到说说的frame,爬取当前页面数据,下拉滚动条,翻页继续获取 爬取的内容写入本地TXT文件中 ...

  5. iOS QQ空间 好友分享

    iOS QQ空间 好友分享 1.进入腾讯开发者平台,可以查看分享SDK文档,根据说明按步骤接入 demo演示 - (void)viewDidLoad { [super viewDidLoad]; // ...

  6. 使用Python2.7和火狐浏览器下载QQ空间好友相册(二)

    原来的文章由于用到了curl的命令,比较麻烦,而且带上cookie之后还是有一部分无法下载,所以用httplib2代替了curl.urllib.urllib2的一些功能.重新写了一个代码 前面文章的代 ...

  7. Python2.7获取QQ空间好友头像

    获取QQ空间好友头像并不复杂,通过一个网址就可以获取 获取方法: 小图 http://qlogo.store.qq.com/qzone/[QQ号]/[QQ号]/50 中图 http://qlogo.s ...

  8. python 实现qq空间网页登录(本文主要是点图标进入空间)

    python 实现qq空间网页登录(本文主要是点图标进入空间) 工具: pycharm.selenium.time from selenium import webdriver from time i ...

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

    关于 Edit by equationl 优先在 码云 上更新 该项目修改自 xjr7670 的 QQzone_crawler 原作者说明: QQ空间动态爬虫 修改了什么? 爬取完整的评论列表 爬取点 ...

  10. python爬qq空间_QQ空间动态爬虫

    先说明几件事:题目的意思是,用于获取"QQ空间动态"的爬虫,而不是"针对QQ空间"的"动态爬虫" 这里的QQ空间动态,特指"说说& ...

最新文章

  1. 用 Linux 命令玩一个有趣的数学游戏
  2. 5分钟掌握手动优化机器学习模型超参数
  3. MVC--Rzaor--例子
  4. “双十一”即来 电商如何开启安全大战?
  5. 我要彻底给你讲清楚,Java就是值传递,不接受争辩的那种!
  6. 编译Bitcoin BCH configure: error: libdb_cxx headers missing ,终于解决了
  7. java解析xml的几种方式
  8. centos7安装VLC播放器
  9. 哈佛创业者讲述:比特币与区块链背后的真相 | 硬创公开课
  10. arm 升腾310_简单说说华为海思的芯片产品线
  11. Heroku应用程序在尝试运行时不断崩溃怎么解决
  12. ORL数据集百度网盘
  13. Docker安装、开发环境配置及项目搭建(二,Docker桌面应用)
  14. Jetson TK1
  15. mac 访问局域网其他电脑上的虚拟机
  16. vsCode 源代码管理插件GitLens使用指南
  17. 软件开发转人工智能一年总结
  18. 反馈纠错机制在学习中的重要性
  19. 100!的尾数有多少个零?
  20. JAVA-Word转PDF各种版本实现方式

热门文章

  1. 浏览器下载ftp文件
  2. 回首来时路——李天岩
  3. 用python做youtube自动化下载器!附完整代码!
  4. 01_基于蒲公英R300A的异地组网PLC调试实现
  5. 网易严选App感受Weex开发
  6. 推荐系统——利用用户标签数据
  7. 又一程序员删库跑路!
  8. mac os 下 打开 JXM 文件
  9. iphone捷径未能连接服务器,ios13无法安装第三方捷径怎么办 不允许不受信任的快捷指令解决方法...
  10. 怎么读取cf卡id_CF卡传输程序的步骤解析