IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【python】QQ 空间照片下载器 -> 正文阅读

[Python知识库]【python】QQ 空间照片下载器

这是我fork 关于dslwind/qzone-photo-downloader的小工具:QQ 空间照片下载器项目,但由于时间长久,下载已经失效。因此我对此做了改进修补工作,这是我的QQ 空间照片下载器demo,我只是为了下载我的一万多张照片。说说、日志、文章、评论暂不需要,如果你有兴趣,你还以用更好功能更全的关于qq空间的wwwpf/QzoneExporter项目。

1. 前提

  • ubuntu linux 18.04.5
  • Python 3.6.9

当然,其他版本不能保证,你可以尝试

2. 安装依赖

  • selenium

    pip install selenium

$ wget https://chromedriver.storage.googleapis.com/99.0.4844.51/chromedriver_linux64.zip  
$ unzip chromedriver_linux64.zip
$ apt install libnss3-dev  chromium-bsu

注意:chrome-browerchromedirver 要保持一致。根本apt源安装chrome-brower默认的版本是99…我选择了chromedirver版本也是99.0.4844.51

3. 使用方法

3.1 克隆

git clone https://github.com/ghostwritten/qzone-photo-downloader.git
cd qzone-photo-downloader

3.2 修改qq

打开downloader.py,定位到以下代码

def entry():
    # 你的 QQ和密码,QQ号必须写,密码可以省略,然后使用网页快速登录功能
    main_user = 123456
    main_pass = ''

    # 要处理的目标 QQ 号,此处可填入多个QQ号,中间用逗号隔开
    dest_users = [123456, ]
$ python3 downloader.py 
.......
正在下载相册 绘画治疗 的第 52 张图片
正在下载相册 绘画治疗 的第 53 张图片
正在下载相册 绘画治疗 的第 54 张图片
正在下载相册 绘画治疗 的第 55 张图片
正在下载相册 绘画治疗 的第 56 张图片
正在下载相册 绘画治疗 的第 57 张图片
正在下载相册 绘画治疗 的第 58 张图片
正在下载相册 绘画治疗 的第 59 张图片
正在下载相册 绘画治疗 的第 60 张图片
正在下载相册 绘画治疗 的第 61 张图片
正在下载相册 绘画治疗 的第 62 张图片
正在下载相册 绘画治疗 的第 63 张图片
正在下载相册 绘画治疗 的第 64 张图片
正在下载相册 绘画治疗 的第 65 张图片
正在下载相册 绘画治疗 的第 66 张图片
正在下载相册 绘画治疗 的第 67 张图片
正在下载相册 绘画治疗 的第 68 张图片
正在下载相册 绘画治疗 的第 69 张图片
正在下载相册 绘画治疗 的第 70 张图片
正在下载相册 插画欣赏 的第 1 张图片
正在下载相册 插画欣赏 的第 2 张图片
正在下载相册 插画欣赏 的第 3 张图片
正在下载相册 插画欣赏 的第 4 张图片
正在下载相册 插画欣赏 的第 5 张图片
正在下载相册 插画欣赏 的第 6 张图片
.......

4 问题

4.1 解析错误

$ python3 downloader.py 
登录成功
登录成功
正在处理用户 xxxx
获取到 0 个相册
未找到 xxxxx 可下载的相册
处理完成

我明明有几十个相册,为什么获取不到呢?
在打印变量c结构体的时候,数据解析结构已经发生变化。
这是旧 的获取相册的方式

    if c:
        c = json.loads(c)
        if ('data' in c) and ('albumListModeSort' in c['data']):
            for i in c['data']['albumListModeSort']:
                albums.append(
                    QzoneAlbum._make([i['id'], i['name'], i['total']]))
    # print(albums)
    return 

这是新的方式,多个一层相册分类的属性:

        if c:
            c = json.loads(c)
            if ('data' in c) and ('albumListModeClass' in c['data']):
                for i in c['data']['albumListModeClass']:
                  for a in i['albumList']:
                     albums.append(
                     QzoneAlbum._make([a['id'], a['name'], a['total']]))
        #print(albums)
        return albums

4.2. valid json 问题

  • json.decoder.JSONDecodeError: Expecting ‘,’ delimiter: line 15135
    column 177 (char 527917)
  • json.decoder.JSONDecodeError: Invalid \escape: line 1 column 1 (char
    1)

一般是JSON 中出现特殊字符易出现该 BUG
你可以尝试

s = json_str.replace('\\', '\\\\')
db = json.loads(s)

或者

c = json.loads(c,strict=False, encoding="utf-8")

或者
根据我的相册内容,而我是将json数据打印出来,判断分析是相册描述是特殊最多的一部分,我暂时将数据输入到一个文件

.....
write_to_json('./data_photo.txt', c)
....
def write_to_json(filename, data):
    jsonfile = open(filename, "w")
    jsonfile.write(data)
...

这样会定位特殊字符的位置,根据相片url,我定位到相册位置,删除照片,就跳过该bug,或者修改相册描述的字段内容。

$ cat data_photo.txt_2 | jq .
parse error: Invalid escape at line 26467, column 384

cat -n data_photo.txt_2 |grep 26467
 26467	         "desc" : "人:越来越不男不女了;钱:越来越不干不净了;友:越来越不好不坏了;情:越来越不咸不淡了;义:越来越不轻不重了;官:越来越不清不白了;理:越来越不清不楚了;心:越来越不红不黒\了;话:越来越不冷不热了;爱:越来越不死不活了;路:越来越不明不暗了。",


?该工具用到的库学习,你可以参考阅读:

在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:39:24  更:2022-04-07 22:40:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:37:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码