鱼C论坛

 找回密码
 立即注册
查看: 1799|回复: 9

[已解决]python base64.b64encode()问题 !!!!

[复制链接]
发表于 2021-1-3 01:36:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 我来上学啦 于 2021-1-3 01:37 编辑

我在看小甲鱼的视频,关于爬取煎蛋网的妹子图
现在煎蛋网的页数信息是用base64 加密的

比如说现在页数是第114页
a = base64.b64encode(b'114')
print(a)
输出结果是   b'MTE0'(算获取成功了)

但是如果需要获取10页的内容的话就出现了一些问题
pages = 114
b64_pages = []
for i in range(10):
        pages -= 1
        a = base64.b64encode(b'pages')
        b64_pages.append(a)
        ...然后a就输出了10个‘pages‘的加密内容出来了
print(b64_pages)的输出内容是 ['b'cGFnZXM='','b'cGFnZXM=''.......]

求助大家要怎么在for循环里面能正确输出 b'MTE0'这个结果来
       
       
最佳答案
2021-1-3 11:30:31
  1. import base64
  2. pages = 114
  3. b64_pages = []
  4. for i in range(10):
  5.         pages -= 1
  6.         a = base64.b64encode(bytes(f'{pages}','utf-8'))
  7.         b64_pages.append(a)
  8. print(b64_pages)
复制代码

[b'MTEz', b'MTEy', b'MTEx', b'MTEw', b'MTA5', b'MTA4', b'MTA3', b'MTA2', b'MTA1', b'MTA0']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-3 01:53:10 | 显示全部楼层
所以说了大半天,你是列表提取元素不会?
挨个打印list中的元素还是用for啊
重写一个for循环读取b64_pages的内容不就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-3 02:26:05 From FishC Mobile | 显示全部楼层
孤独的嫖客 发表于 2021-1-3 01:53
所以说了大半天,你是列表提取元素不会?
挨个打印list中的元素还是用for啊
重写一个for循环读取b64_pages ...

是转换base64编码不会,在for循环里面转换,输出了10个一样的内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-3 04:13:56 | 显示全部楼层
我来上学啦 发表于 2021-1-3 02:26
是转换base64编码不会,在for循环里面转换,输出了10个一样的内容

a = base64.b64encode(b'pages')
引号内的文字算作字符串,这个,你滴明白?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-3 09:12:00 | 显示全部楼层
基础没学好,没理解变量和字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-3 10:54:33 From FishC Mobile | 显示全部楼层
孤独的嫖客 发表于 2021-1-3 04:13
a = base64.b64encode(b'pages')
引号内的文字算作字符串,这个,你滴明白?

我知道,我意思是要怎么把for循环的10个数字依次当变量传递进括号里
我前面不是用pages -= 1 得到了10个数字嘛
然后我把pages这个变量传进去
结果base64.b64encode(b`pages`)把我需要传入的这个变量当成了字符串输出了10次

我的问题是这个b64encode()要怎么输入括号里的内容才不会被当成字符串编码了


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-3 10:57:15 | 显示全部楼层
何必呢 观察发现你这个base64是不用等号来补位的 既然如此
你写一个base64的子类让其可以直接-1
base64是 0到9 a到z   满36进一位  懂吧 搞个36进制的正整数减法运算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-3 11:04:00 | 显示全部楼层
我来上学啦 发表于 2021-1-3 10:54
我知道,我意思是要怎么把for循环的10个数字依次当变量传递进括号里
我前面不是用pages -= 1 得到了10个 ...

bytes('114','utf-8')
或者
'114'.encode()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-3 11:30:31 | 显示全部楼层    本楼为最佳答案   
  1. import base64
  2. pages = 114
  3. b64_pages = []
  4. for i in range(10):
  5.         pages -= 1
  6.         a = base64.b64encode(bytes(f'{pages}','utf-8'))
  7.         b64_pages.append(a)
  8. print(b64_pages)
复制代码

[b'MTEz', b'MTEy', b'MTEx', b'MTEw', b'MTA5', b'MTA4', b'MTA3', b'MTA2', b'MTA1', b'MTA0']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-3 12:37:27 From FishC Mobile | 显示全部楼层
疾风怪盗 发表于 2021-1-3 11:30

谢谢,大哥牛逼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 08:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表