Python爬取QQ空间好友说说并生成词云(超详细)

前言

先看效果图: 

思路

1.确认访问的URL 
2.模拟登录你的QQ号 
3.判断好友空间是否加了权限,切换到说说的frame,爬取当前页面数据,下拉滚动条,翻页继续获取 爬取的内容写入本地TXT文件中 
4.爬取到最后一页,读取TXT文件从而生成词云

具体分析

1.确认访问的URL 
这就很简单了,我们通过观察发现,QQ空间好友的URL: 
https://user.qzone.qq.com/{好友QQ号}/311

2.我们在请求的时候会遇到模拟登录,也就是要通过Selenium+浏览器登录你的QQ号后才能访问你好友的QQ空间 
下面是模拟登录的代码:

 1 file = ‘C:/Users/Administrator/Desktop/{}.txt‘.format(qq)
 2     driver = webdriver.Firefox()
 3     driver.maximize_window() #窗口最大化
 4
 5     driver.get(‘https://user.qzone.qq.com/{}/311‘.format(qq))  #URL
 6     driver.implicitly_wait(10)  # 隐示等待,为了等待充分加载好网址
 7     driver.find_element_by_id(‘login_div‘)
 8     driver.switch_to_frame(‘login_frame‘) #切到输入账号密码的frame
 9     driver.find_element_by_id(‘switcher_plogin‘).click()##点击‘账号密码登录’
10     driver.find_element_by_id(‘u‘).clear() ##清空账号栏
11     driver.find_element_by_id(‘u‘).send_keys(‘你的QQ账号‘)#输入账号
12     driver.find_element_by_id(‘p‘).clear()#清空密码栏
13     driver.find_element_by_id(‘p‘).send_keys(‘你的QQ密码‘)#输入密码
14     driver.find_element_by_id(‘login_button‘).click()#点击‘登录’
15     driver.switch_to_default_content()   #跳出当前的frame,这步很关键,不写会报错的,因为你登录后还要切刀另一个frame

需要强调是 driver.switch_to_default_content() ,表示跳出当前的frame,这步很关键,因为你登录后还要切刀另一个frame。不写的话会出现下面的错误:

3.第三部分我分几个点来说: 
(1).判断空间是否加了权限

1     try:
2         driver.find_element_by_id(‘QM_OwnerInfo_Icon‘)#判断是否QQ空间加了权限
3         b = True
4     except:
5         b = False

(2)切换到说说的frame,这个大家都会找吧 

(3)下拉滚动条 
下拉滚动条是为了点击‘下一页’,下拉到可见视图。下拉滚动条要注意一点: 
一定要对应它的frame,不要在爬取说说的frame下拉。

1 #分4此下拉,确保能下拉到底部
2    for j in range(1, 5):
3                     driver.execute_script("window.scrollBy(0,5000)")
4                     time.sleep(2)

(4)爬取说说数据,这就简单了吧?我用的xpath获取的说说的title,感兴趣的朋友可以把时间等数据一起获取

1                 selector = etree.HTML(driver.page_source)
2                 title = selector.xpath(‘//li/div/div/pre/text()‘)

(5).翻页 
直接点击‘下一页’即可。

1 driver.find_element_by_link_text(u‘下一页‘).click()

(6).txt数据写入,不用多说,爬取到title了直接写入

1                 for i in title:
2                     if not os.path.exists(file):
3                         print(‘创建TXT成功‘)
4
5                     with open(file, ‘a+‘) as f:
6                         f.write(i + ‘\n\n‘)
7                         f.close()

4.生成词云,这只是普通的模式,想具体了解可以看我以前文章或者Google

 1 def get_wordcloud(file):
 2
 3
 4     f = open(file, ‘r‘, encoding=‘gbk‘).read()
 5
 6     # 结巴分词,生成字符串,wordcloud无法直接生成正确的中文词云
 7     cut_text = " ".join(jieba.cut(f))
 8
 9     wordcloud = WordCloud(
10         # 设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的
11         font_path="C:/Windows/Fonts/simfang.ttf",
12         # 设置了背景,宽高
13         background_color="white", width=2000, height=1380).generate(cut_text)
14
15     plt.imshow(wordcloud, interpolation="bilinear")
16     plt.axis("off")
17     plt.show()
18#Python学习交流群:548377875

由于时间问题,此篇文章只支持输入一个好友的QQ号,你要是想爬取你的所有的QQ好友的说说,可以现在QQ邮箱获取你所有好友的QQ号,然后生成一个数组,依次获取就可以了。

原文地址:https://www.cnblogs.com/Python6359/p/9601070.html

时间: 2024-10-09 22:38:19

Python爬取QQ空间好友说说并生成词云(超详细)的相关文章

python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法

本文旨在提供爬取豆瓣电影<我不是药神>评论和词云展示的代码样例 1.分析URL 2.爬取前10页评论 3.进行词云展示 1.分析URL 我不是药神 短评 第一页url https://movie.douban.com/subject/26752088/comments?start=0&limit=20&sort=new_score&status=P 第二页url https://movie.douban.com/subject/26752088/comments?sta

python3.7 爬取QQ空间好友

使用selenium库自动登录,记录登录的Cookie.以下URL分别代表不同的动作,虽然没有全用. 留言:https://user.qzone.qq.com/proxy/domain/m.qzone.qq.com/cgi-bin/new/get_msgb?uin=1612893772&hostUin=1148639090&start=0&s=0.8883444517176473&format=jsonp&num=10&inCharset=utf-8&

爬取网易云音乐评论并使用词云展示

最近听到一首很喜欢的歌,许薇的<我以为>,评论也很有趣,遂有想爬取该歌曲下的所有评论并用词云工具展示. 我们使用chrome开发者工具,发现歌曲的评论都隐藏在以 R_SO_4 开头的 XHR 文件中 接下来思路就很明确,拿到该文件,解析该文件的 json 数据,拿到全部评论. 我们可以看到该文件有两个用JS加密的参数 params 和 encSecKey ,关于这两个加密参数,参考了知乎用户的解答:https://www.zhihu.com/question/36081767 . 步骤: 1.

python selenium爬取QQ空间方法

from selenium import webdriver import time # 打开浏览器 dr = webdriver.Chrome() # 打开某个网址 dr.get('https://user.qzone.qq.com/2330331400/main') # 切换框架 dr.switch_to_frame('login_frame') time.sleep(1) dr.find_element_by_link_text('帐号密码登录').click() # 输入账号 dr.fi

python抓取QQ空间的日志

# -*- coding: utf-8 -*- from HttpRequestModule import *  import os import json import traceback import codecs from lxml import etree import StringIO, gzip  import sys reload(sys) sys.setdefaultencoding('utf-8') def write_file(file_name,file_data,enco

python 爬取QQ音乐

import requests import json import os import threading #发送请求获取信息 def get_response(url): headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' } response =

python爬虫爬取QQ说说并且生成词云图,回忆满满!

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务.它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句. Python支持命令式程序设计.面向对象程序设计.函数式编程.面向切面编程.泛型编程多种编程范式.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收

python3爬取qq音乐并下载

本文参考Python 爬取qqmusic音乐url并批量下载 同学找我爬取一下qq音乐播放链接,包括歌词等信息打包成json,试了一下可以爬取. 一.找到qq音乐播放的url 1.找到搜索页面返回的数据包 歌曲最终的播放链接时经过多次拼接的,首先找到qq音乐搜索歌曲界面,https://y.qq.com/portal/search.html#page=1&searchid=1&remoteplace=txt.yqq.top&t=song&w=%E5%91%A8%E6%9D%

深夜,我用python爬取了整个斗图网站,不服来斗

深夜,我用python爬取了整个斗图网站,不服来斗 QQ.微信斗图总是斗不过,索性直接来爬斗图网,我有整个网站的图,不服来斗. 废话不多说,选取的网站为斗图啦,我们先简单来看一下网站的结构 网页信息 从上面这张图我们可以看出,一页有多套图,这个时候我们就要想怎么把每一套图分开存放(后边具体解释) 通过分析,所有信息在页面中都可以拿到,我们就不考虑异步加载,那么要考虑的就是分页问题了,通过点击不同的页面,很容易看清楚分页规则 很容易明白分页URL的构造,图片链接都在源码中,就不做具体说明了明白了这