Python爬虫QQ空间好友说说

news/2024/10/31 5:32:31/

#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解析方法
  • 降低对内存消耗
  • 多线程加速

注:如有不足,请斧正。


http://www.ppmy.cn/news/266967.html

相关文章

计算机管理里边设置访问权限,电脑访问权限设置_电脑软件访问权限设置

2016-12-26 17:43:40 电脑设置访问权限的方法:1、在“开始”菜单“运行”中输入:gpedit.msc,运行组策略编辑器程序。 2、在编辑器的窗口的左侧窗格中逐级展开“计算机配置”--“Windows... 2016-11-30 14:47:25 1.本地连接的IP和DNS设置成自动获取2.可以尝试把路由器恢复出厂…

用Python爬取QQ空间说说和相册!还不让我访问!

QQ 空间在 2005 年被腾讯开发,已经经历了 15 个年头,在还没有微信的年代,看网友发表的心情、心事、照片大多都在 QQ 空间的里。它承载了80、90 后的大量青春,下面我们一起用 selenium 模块导出说说和相册回忆青春吧 安装 seleniu…

python破解qq空间访问权限_怎么利用爬虫爬取QQ空间中设置了权限的无法正常访问的内容?...

怎么利用爬虫爬取QQ空间中设置了权限的无法正常访问的内容?比如很多人的空间不允许别人访问,或者有些相册不允许别人访问 回复内容: 你把 『利用爬虫爬取』 这个定语去掉,能做到,再去考虑 『利用爬虫爬取』 这个问题。…

QQ空间权限限制破解思路

QQ空间是腾讯公司很有活力的产品,用户量非常巨大。多年前并不流行,但现在越来越多的用户在上面分享自己的照片新鲜事,QQ作为一个通讯工具,有时承载了太多的事情,很多不同的联系人都加在上面,但是有些时候,我们只是因为工作上的关系而加一下QQ,但是并不想让他们看到我们…

解析Windows 2008系统的数百个服务

在下面的列表里面,大家请注意一下各种颜色, 服务名称 描述 最佳建议 第二建议 服务路径 .NET Runtime Optimization Service v2.0.50215_X86 对使用下一代技术编写的程序的运行提供优化。该服务的默认运行方式是手动, 不建议更改。 \\WINDOWS…

基于Snort的入侵检测系统

基于Snort的入侵检测系统 用Snort,Apache,MySQL,PHP及ACID构建高级IDS 第一章 入侵检测系统及Snort介绍 在当今的企业应用环境中,安全是所有网络面临的大问题。黑客和入侵者已成功的入侵了一些大公司的网络及网站。目前已经存在一些保护网络架构及通信安全的方法&a…

解析windows 2008 服务

.NET Runtime Optimization Service v2.0.50215_X86 对使用下一代技术编写的程序的运行提供优化。该服务的默认运行方式是手动,不建议更改。 \\WINDOWS\Microsoft.NET\Framework\v2.0.50215\mscorsvw.exe 估计使用该技术之后,运行.Net技术编写的程序时执…

完整的网络端口表《三》

防火墙相关 106 Question:CacheEngine是否具有URL过滤功能? Answer:CacheEngine1.7-2.0版本的软件支持一种叫URL Blocking的功能,该功能是在 CacheEngine的适配器接口上进行配置实现的,它可以将由特定地址来的流量阻断。CacheEngine2.1版本…