本帖最后由 ForGot_227 于 2021-3-9 11:48 编辑
起因呢,我很久以前用的一个工具更新了,之前用的是docker最新版本,但后来更新之后数据什么都变了,需要重新开发,但目前我只负责修复,只能找回原本的镜像。
我打算根据images id去匹配原先的版本,但版本号太多了,所以想抓一遍。
在获取到数据之后,使用json() 改为 dict ,然后想用for循环去加载,但始终加载不了,一直提示“TypeError: string indices must be integers” 字符串索引必须是整数
不知道怎么解决,有哪位大哥可以教一下
[Python] 纯文本查看 复制代码 r = requests.get(w_next)
d = r.json()
for dc in d:
adc = dc['next']
print(adc)
直接打印所有结果
看了下C的值,是不是要重新改成数组或者字典才能使用?
------------------
3-9 编辑 已解决。 下面附上写的代码,第一次尝试写这个,若很差,烦请指点下。
主要作用,抓取 docker 某镜像的所有版本和sha256的值,因为images id是sha256的前几位,我仅用来看以前用过的是那个版本。
[Python] 纯文本查看 复制代码 # -*- coding:utf-8 -*-
import requests
import time
"""变量"""
tag = 'rasa/rasa-x' #docker image name
file = 'F:\\\\python\\rasa-x.txt' #写入文件,目前仅TXT,其他格式自行修改
w_next = 'https://hub.docker.com/v2/repositories/'+tag+'/tags/?page_size=25&page=1&ordering=last_updated' #拼接接口地址
"""代码"""
file_handle=open(file, mode='w') #打开文件
while bool(w_next): #判断是否有下一页,false则结束
r = requests.get(w_next)
w_datas = r.json()
w_next = w_datas['next']
print(w_next)
w_results = w_datas['results']
for datas in w_results:
if datas['images'] != []: #避免 images为空报错
data = datas['images'][0]
tagdigest = data['digest']
else:
tagdigest = ''
tagname = datas['name']
write_text = "版本:" + tagname + " " + tagdigest + '\n' #写入文本编辑
file_handle.write(write_text) #写入文件
#print(write_text)
time.sleep(5)
file_handle.close() #关闭文件
|