我来上学啦 发表于 2021-1-3 01:36:19

python base64.b64encode()问题 !!!!

本帖最后由 我来上学啦 于 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 01:53:10

所以说了大半天,你是列表提取元素不会?
挨个打印list中的元素还是用for啊
重写一个for循环读取b64_pages的内容不就行了

我来上学啦 发表于 2021-1-3 02:26:05

孤独的嫖客 发表于 2021-1-3 01:53
所以说了大半天,你是列表提取元素不会?
挨个打印list中的元素还是用for啊
重写一个for循环读取b64_pages ...

是转换base64编码不会,在for循环里面转换,输出了10个一样的内容

孤独的嫖客 发表于 2021-1-3 04:13:56

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

a = base64.b64encode(b'pages')
引号内的文字算作字符串,这个,你滴明白?

疾风怪盗 发表于 2021-1-3 09:12:00

基础没学好,没理解变量和字符串

我来上学啦 发表于 2021-1-3 10:54:33

孤独的嫖客 发表于 2021-1-3 04:13
a = base64.b64encode(b'pages')
引号内的文字算作字符串,这个,你滴明白?

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

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


kogawananari 发表于 2021-1-3 10:57:15

何必呢 观察发现你这个base64是不用等号来补位的 既然如此
你写一个base64的子类让其可以直接-1
base64是 0到9 a到z   满36进一位懂吧 搞个36进制的正整数减法运算

kogawananari 发表于 2021-1-3 11:04:00

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

bytes('114','utf-8')
或者
'114'.encode()

疾风怪盗 发表于 2021-1-3 11:30:31

import base64
pages = 114
b64_pages = []
for i in range(10):
      pages -= 1
      a = base64.b64encode(bytes(f'{pages}','utf-8'))
      b64_pages.append(a)
print(b64_pages)

我来上学啦 发表于 2021-1-3 12:37:27

疾风怪盗 发表于 2021-1-3 11:30


谢谢,大哥牛逼
页: [1]
查看完整版本: python base64.b64encode()问题 !!!!