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

安装 selenium
selenium 是一个在浏览器中运行,以模拟用户操作浏览器的方式获取网页源码,使用 pip 安装 selenium 模块
pip install selenium
查看 chrome 浏览器版本并下载 对应的 chrome 浏览器驱动

http://npm.taobao.org/mirrors/chromedriver 网址中找到相同版本的 chrome 驱动,并放在 python 程序运行的同一个文件夹中登陆
按 F12 检擦网页源代码,找到登录和密码的文本框,如下图所示

def login(login_qq,password, business_qq): ''' 登陆 :param login_qq: 登陆用的QQ :param password: 登陆的QQ密码 :param business_qq: 业务QQ :return: driver ''' driver = webdriver.Chrome() driver.get('https://user.qzone.qq.com/{}/311'.format(business_qq)) # URL driver.implicitly_wait(10) # 隐示等待,为了等待充分加载好网址 driver.find_element_by_id('login_div') driver.switch_to.frame('login_frame') # 切到输入账号密码的frame driver.find_element_by_id('switcher_plogin').click() ##点击‘账号密码登录’ driver.find_element_by_id('u').clear() ##清空账号栏 driver.find_element_by_id('u').send_keys(login_qq) # 输入账号 driver.find_element_by_id('p').clear() # 清空密码栏 driver.find_element_by_id('p').send_keys(password) # 输入密码 driver.find_element_by_id('login_button').click() # 点击‘登录’ driver.switch_to.default_content() driver.implicitly_wait(10) time.sleep(5) try: driver.find_element_by_id('QM_OwnerInfo_Icon') return driver except: print('不能访问' + business_qq) return None说说
登录 QQ 后默认的页面就在说说的界面,显示一页的说说是滚动加载的,必须要多次下拉滚动条后才能获取到该页所有的说说,然后用 BeautifulSoup 模块构建对象解析页面,下图是放说说的 iframe

def get_shuoshuo(driver): page = 1 while True: # 下拉滚动条 for j in range(1, 5): driver.execute_script("window.scrollBy(0,5000)") time.sleep(2) # 切换 frame driver.switch_to.frame('app_canvas_frame') # 构建 BeautifulSoup 对象 bs = BeautifulSoup(driver.page_source.encode('GBK', 'ignore').decode('gbk')) # 找到页面上的所有说说 pres = bs.find_all('pre', class_='content') for pre in pres: shuoshuo = pre.text tx = pre.parent.parent.find('a', class_="c_tx c_tx3 goDetail")['title'] print(tx + ":" + shuoshuo) # 页数判断 page = page + 1 maxPage = bs.find('a', title='末页').text if int(maxPage) < page: break driver.find_element_by_link_text(u'下一页').click() # 回到主文档 driver.switch_to.default_content() # 等待页面加载 time.sleep(3)相册
下载相册里面的照片需要 selenium 模块模拟鼠标一步步点击页面,先点击上方的相册按钮,进去就是多个相册的列表,下图是单个相册的超链接

在单个相册中点击照片,界面如下图

def get_photo(driver): # 照片下载路径 photo_path = "C:/Users/xxx/Desktop/photo/{}/{}.jpg" # 相册索引 photoIndex = 1 while True: # 回到主文档 driver.switch_to.default_content() # driver.switch_to.parent_frame() # 点击头部的相册按钮 driver.find_element_by_xpath('//*[@id="menuContainer"]/div/ul/li[3]/a').click() #等待加载 driver.implicitly_wait(10) time.sleep(3) # 切换 frame driver.switch_to.frame('app_canvas_frame') # 各个相册的超链接 a = driver.find_elements_by_class_name('album-cover') # 单个相册 a[photoIndex].click() driver.implicitly_wait(10) time.sleep(3) # 相册的第一张图 p = driver.find_elements_by_class_name('item-cover')[0] p.click() time.sleep(3) # 相册大图在父frame,切换到父frame driver.switch_to.parent_frame() # 循环相册中的照片 while True: # 照片url地址和名称 img = driver.find_element_by_id('js-img-disp') src = img.get_attribute('src').replace('&t=5', '') name = driver.find_element_by_id("js-photo-name").text # 下载 urlretrieve(src, photo_path.format(qq, name)) # 取下面的 当前照片张数/总照片数量 counts = driver.find_element_by_xpath('//*[@id="js-ctn-infoBar"]/div/div[1]/span').text counts = counts.split('/') # 最后一张的时候退出照片浏览 if int(counts[0]) == int(counts[1]): # 右上角的 X 按钮 driver.find_element_by_xpath('//*[@id="js-viewer-main"]/div[1]/a').click() break # 点击 下一张,网页加载慢,所以10次加载 for i in (1, 10): if driver.find_element_by_id('js-btn-nextPhoto'): n = driver.find_element_by_id('js-btn-nextPhoto') ActionChains(driver).click(n).perform() break else: time.sleep(5) # 相册数量比较,是否下载了全部的相册 photoIndex = photoIndex + 1 if len(a) <= photoIndex: break
示例结果

总结
大家在看十几年前的说说和照片是不是感觉满满的黑历史快要溢出屏幕了。时光荏苒、岁月如梭,愿一切安好。

看qq加密相册_用 Python 爬取 QQ 空间说说和相册相关推荐

  1. python 删除所有空间说说_用 Python 爬取 QQ 空间说说和相册

    QQ 空间在 2005 年被腾讯开发,已经经历了 15 个年头,在还没有微信的年代,看网友发表的心情.心事.照片大多都在 QQ 空间的里.它承载了80.90 后的大量青春,下面我们一起用 seleni ...

  2. python爬音乐网站_用 Python 爬取 QQ 音乐全部歌曲

    前景介绍 最近小伙伴们听歌的兴趣大涨,网抑云综合症已经遍布各地. 咱们再来抬高一波QQ音乐的热度吧. 土豪充绿钻 和 刷永久绿钻的除外(me) 爬它 目标:https://y.qq.com/porta ...

  3. 用python爬取qq空间内容_用python爬取QQ空间

    原博文 2016-11-18 17:19 − 好久没写博文了,最近捣鼓了一下python,好像有点上瘾了,感觉python比js厉害好多,但是接触不久,只看了<[大家网]Python基础教程(第 ...

  4. python爬取qq好友_利用Python爬取QQ好友空间数据

    程序思路 构造请求链接 先获取所有的好友 获取说说 获取留言 获取个人信息 把数据存到数据库 以上就是整个过程中的大思路,然后在逐步把大思路化解成小的具体的问题去解决.本人对于Python学习创建了一 ...

  5. python爬取qq数据_用Python爬取QQ好友空间说说进行分析

    前言: 本文涉及知识点有数据库的读写,python基础,浏览器开发者工具的使用,适用于有编程基础,了解过python的朋友阅读. 环境:PyCharm+Chrome+MongoDB Window10 ...

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

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

  7. python爬取qq音乐歌曲链接为什么播放不出来_手把手教你使用Python抓取QQ音乐数据(第一弹)...

    原标题:手把手教你使用Python抓取QQ音乐数据(第一弹) [一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. ...

  8. python爬取QQ音乐免费歌曲 2020.7.26

    python爬取qq音乐免费歌曲 2020.7.26 目标分析 获取音乐列表 1.浏览器网络请求追踪 2.寻找音乐列表 解析qq音乐 1.下载连接组成 2.获取vkey 3.获取sign参数 关系图 ...

  9. python爬取qq音乐标签_Python爬取qq音乐的过程实例

    一.前言 qq music上的音乐还是不少的,有些时候想要下载好听的音乐,但有每次在网页下载都是烦人的登录什么的.于是,来了个qqmusic的爬虫.至少我觉得for循环爬虫,最核心的应该就是找到待爬元 ...

最新文章

  1. ServiceMesh有关sidecar理解
  2. 在ASP.NET中怎么用SESSION判断用户是否登录
  3. idea mac 替换_Mac软件IntelliJ IDEA 上的快捷键,让你的工作更加顺畅
  4. 谈谈Memcached与Redis
  5. linux系统切换清华源(自带的源下载速度太拉跨)
  6. linux 内核 3.3.8,Linux内核编译 Ubuntu 14.04.3 server 升级至3.19.8
  7. 表哥的access入门 资源_理想的产品管理系统之二-找到Access
  8. UTF与ascii区别
  9. 手机+PC电脑如何使用油猴插件和油猴脚本?
  10. 【清除office待激活密钥】
  11. 如果你对未来还有点迷茫不妨来看一下,必看的软件测试指引!!!
  12. 基于J2EE的B2C电子商务系统开发与实现
  13. 【Linux】Linux基础命令及英文全称
  14. 区块链基础知识与关键技术解析
  15. 光模块第一节之模块的制作和测试环境搭建
  16. 如何制作自己的网页字体图标
  17. 计算机桌面颜色异常怎样修复,电脑显示器变色怎么办?显示器颜色异常的原因及解决方法...
  18. oracle函数怎么遍历二维数组,oracle存储过程之游标查询,一维和二维数组,循环,条件判断例子...
  19. jQuery的基本用法
  20. 计算机专业复试面试英语口语问题,考研复试英语口语面试经典问题集锦.doc

热门文章

  1. c语言中三种常用的循环控制结构是,三C语言的基本控制结构.ppt
  2. input和button放在同一行_黑龙江作家协会冯殿波散文集《足音》84情系东保卫,魅力采风行...
  3. java语言用数组接收字符_Java基础——数组应用之字符串String类
  4. php时间序列比对,常用在线序列比对工具
  5. php 实现数组转json数据结构,php怎么实现数组转json
  6. 基于JAVA+SpringBoot+Mybatis+MYSQL的客户关系CRM系统
  7. 基于JAVA+SpringMVC+MYSQL的网上人才招聘系统
  8. python字符串无效的原因_Python(60)扩展和嵌入1.使用 C 或 C++ 扩展 Python
  9. linux和Windows之间互传文件
  10. 访问数据库需要注意的问题 c#