#coding:utf-8import time
from selenium import webdriver
from lxml import etree
#这里一定要设置编码格式,防止后面写入文件时报错
import sys
reload(sys)
sys.setdefaultencoding('utf-8')friend = '1467' # 朋友的QQ号,朋友的空间要求允许你能访问
user = '1467'  # 你的QQ号
pw = '9'  # 你的QQ密码#获取浏览器驱动
driver= webdriver.Chrome()# 浏览器窗口最大化
driver.maximize_window()# 浏览器地址定向为qq登陆页面
driver.get("http://i.qq.com")# 所以这里需要选中一下frame,否则找不到下面需要的网页元素
driver.switch_to.frame("login_frame")# 自动点击账号登陆方式
driver.find_element_by_id("switcher_plogin").click()# 账号输入框输入已知qq账号
driver.find_element_by_id("u").send_keys(user)# 密码框输入已知密码
driver.find_element_by_id("p").send_keys(pw)# 自动点击登陆按钮
driver.find_element_by_id("login_button").click()
time.sleep(4)
# 让webdriver操纵当前页
driver.switch_to.default_content()# 跳到说说的url, friend你可以任意改成你想访问的空间
driver.get("http://user.qzone.qq.com/" + friend + "/311")next_num = 0  # 初始“下一页”的id
while True:# 下拉滚动条,使浏览器加载出动态加载的内容,# 我这里是从1开始到6结束 分5 次加载完每页数据for i in range(1,6):height = 20000*i#每次滑动20000像素#scroIIBy9() 把内容滚动到指定的像素数#str() 将变量转化为字符串类型strWord = "window.scrollBy(0,"+str(height)+")"#选定加载位置driver.execute_script(strWord)time.sleep(4)# 很多时候网页由多个<frame>或<iframe>组成,webdriver默认定位的是最外层的frame,# 所以这里需要选中一下说说所在的frame,否则找不到下面需要的网页元素driver.switch_to.frame("app_canvas_frame")selector = etree.HTML(driver.page_source)divs = selector.xpath('//*[@id="msgList"]/li/div[3]')#这里使用 a 表示内容可以连续不清空写入with open('qq_word.txt','a') as f:for div in divs:qq_name = div.xpath('./div[2]/a/text()')qq_content = div.xpath('./div[2]/pre/text()')qq_time = div.xpath('./div[4]/div[1]/span/a/text()')qq_name = qq_name[0] if len(qq_name)>0 else ''qq_content = qq_content[0] if len(qq_content)>0 else ''qq_time = qq_time[0] if len(qq_time)>0 else ''print qq_name,qq_time,qq_contentf.write(qq_content+"\n")# 当已经到了尾页,“下一页”这个按钮就没有id了,可以结束了if driver.page_source.find('pager_next_' + str(next_num)) == -1:break# 找到“下一页”的按钮,因为下一页的按钮是动态变化的,这里需要动态记录一下driver.find_element_by_id('pager_next_' + str(next_num)).click()# “下一页”的idnext_num += 1time.sleep(1)# 因为在下一个循环里首先还要把页面下拉,所以要跳到外层的frame上driver.switch_to.default_content()# driver.switch_to.parent_frame()# driver.switch_to.parent_frame()
driver.quit()
print ('爬取完毕')

生成图片

#coding:utf-8"""
使用结巴分词生成云图说明这里1.生成词云一定要设置字体样式,否则汉字出现乱码或者不显示2.我不知道为什么本机一直显示不了中文,后面我加了jieba分词词库就可以显示中文了
"""
from os import path
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jiebad = path.dirname(__file__)#生成词云
def create_word_cloud(test001):text = open(path.join(d, 'qq_word.txt')).read()# 结巴分词wordlist = jieba.cut(text, cut_all=True)wl = " ".join(wordlist)# 设置词云wc = WordCloud(# 设置背景颜色# background_color="white",background_color="white",# 设置最大显示的词云数max_words=5000,# 这种字体都在电脑字体中,一般路径font_path='C:\Windows\Fonts\simfang.ttf',height= 10000,width= 10000,# 设置字体最大值max_font_size=100,# 设置有多少种随机生成状态,即有多少种配色方案random_state=20,)myword = wc.generate(wl)  # 生成词云# 展示词云图plt.imshow(myword)plt.axis("off")plt.show()wc.to_file('py_book.png')  # 把词云保存下if __name__ == '__main__':create_word_cloud('word_py')

爬虫-爬取QQ空间 并生成图片相关推荐

  1. QQ爬虫-爬取QQ空间

    背景: 在一篇个人博客看到了相关的爬虫的知识,个人比较有兴趣,就花了点时间研究了一下,主要通过好友空间的互动(相互访问量,点赞,评论,以及其他互动),以及好友之间聊天的活跃度,日常点赞量,好友之间的关 ...

  2. 如何用python爬虫爬取qq空间说说

    之前学了下爬虫一直就想爬一下QQ空间 在爬取之前需要做的准备工作 安装python3 需要的库: re 正则 selenium 需要安装 chrome 或者 Firefox 还有他们的模拟 Chrom ...

  3. python爬虫爬取qq空间说说_用python爬取qq空间说说

    环境:PyCharm+Chorme+MongoDB Window10 爬虫爬取数据的过程,也类似于普通用户打开网页的过程.所以当我们想要打开浏览器去获取好友空间的时候必定会要求进行登录,接着再是查看说 ...

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

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

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

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

  6. php取qq空间说说id,Python爬取qq空间说说的实例代码

    具体代码如下所示: #coding:utf-8 #!/usr/bin/python3 from selenium import webdriver import time import re impo ...

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

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

  8. QQ好友列表获取导出类:爬虫爬取QQ号

    QQ好友列表获取类:爬虫爬取QQ号,这个个爬虫是拿来练手的,可以爬取网络中的QQ号,然后存储到本地 import urllib.request import ssl import re import ...

  9. python爬取QQ空间好友说说并生成词云

    最近自己玩爬虫玩得很嗨.想到爬QQ空间主要是因为在看网课的时候有不少人刷弹幕要去爬前女友空间..咳咳,虽然我没有前女友,但是这不失为一个有趣的练手机会.(爬完之后发现不会留下访客记录!确实很适合爬前女 ...

最新文章

  1. FauxPas试用时间破解
  2. tensorflow 1.0 学习:参数和特征的提取
  3. 《大话数据结构》读书笔记-栈与队列
  4. 计算机主板的1117标识,电脑出现:错误1117.......截图如下,
  5. Python 实现类似sed命令的字符串替换小程序
  6. 培训补坑(day1:最短路two-sat)
  7. PyCharm喜好设置
  8. c语言程序设计k.r,【答题】C语言程序设计问题与解释实验
  9. 实例19:python
  10. 对存储还搞不清楚,先看看这篇文章-从51单片机上去理解存储器
  11. Angular Web App部署Linux Nginx Https
  12. 【线性代数本质】2:线性组合和线性相关和线性无关以及张成的空间
  13. 吃货阶段03 需求 实现我要下单的功能 0927
  14. 你真的理解反向传播吗?面试必备
  15. 怎样用命令查看Mysql数据库大小?
  16. grasshopper for rhino 6下载_漫谈算法设计与脚本语言(grasshopper, python)
  17. Cadence Orcad Capture鱼眼视图Fisheye view介绍图文视频教程
  18. Windows电脑上不错的几款图片编辑软件
  19. centos7 卸载service服务
  20. kali linux查看局域网下所有IP,并对指定IP实施局域网内攻击

热门文章

  1. 解决mysql特殊字符或者Emoji表情插入报错问题
  2. Unity3D 物理引擎、物体施加力 Rigidbody
  3. 执行 tensorboard --logdir logs遇到的浏览器中输入http://localhost:6006 网址打不开的问题
  4. Java实战(第二版)读后总结与感想
  5. 史上最全微信公众平台认证方法教程
  6. CentOS7搭建LNMP环境
  7. 【统计学习方法】学习笔记——EM算法及其推广
  8. Java mp3文件转pcm文件
  9. JZOJ6828. 【2020.10.25提高组模拟】幂
  10. 学习使用php获取企业微信通讯录管理接口代码