学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
code_js.js
function getApiKey() {
var t = (new Date).getTime()
, e = encryptApiKey();
return t = encryptTime(t),
comb(e, t)
}
// encryptApiKeya
function encryptApiKey() {
var t = "a2c903cc-b31e-4547-9299-b6d07b7631ab"
, e = t.split("")
, r = e.splice(0, 8);
return e.concat(r).join("")
}
// encryptApiKey
function encryptTime(t) {
var e = (1 * t + 1111111111111).toString().split("")
, r = parseInt(10 * Math.random(), 10)
, n = parseInt(10 * Math.random(), 10)
, o = parseInt(10 * Math.random(), 10);
return e.concat([r, n, o]).join("")
}
// comb
function comb(t, e) {
var r = "".concat(t, "|").concat(e);
return btoa(r)
}
// 调用函数运行
// console.log(getApiKey())
JS方式实现
import requests
import json
import execjs
from jsonpath import jsonpath
import time
# 第一页 https://www.oklink.com/api/explorer/v1/btc/transactionsNoRestrict?t=1657362656709&limit=20&offset=0
# 第二页 https://www.oklink.com/api/explorer/v1/btc/transactionsNoRestrict?t=1657362632969&limit=20&offset=20
# 第三页 https://www.oklink.com/api/explorer/v1/btc/transactionsNoRestrict?t=1657362567236&limit=20&offset=40
# 第四页 https://www.oklink.com/api/explorer/v1/btc/transactionsNoRestrict?t=1657362796076&limit=20&offset=60
def parse(offset):
## 目标地址:'https://www.oklink.com/zh-cn/btc/tx-list?limit=20&pageNum=1'
with open('./code_js.js', 'r', encoding='utf-8') as f:
js_code = f.read()
# compile 调用文件,call 调用getApiKey函数
apiKey = execjs.compile(js_code).call('getApiKey')
# print(apiKey)
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36",
'x-apiKey': apiKey
}
# t 是当前时间的数据戳
t = str(time.time() * 1000)[:-5]
# print(t)
data = {
't': t,
'limit': 20,
'offset': offset
}
# 数据接口地址
url = 'https://www.oklink.com/api/explorer/v1/btc/transactionsNoRestrict'
res = requests.get(url, headers=header, params=data).text
# json字符串数据,转为python字典数据
dict_data = json.loads(res)
# print(json_data)
# 数据提取
# 交易哈希
hash_list = jsonpath(dict_data, "$..hash")
# 所在区块
blockHeight_list = jsonpath(dict_data, "$..blockHeight")
# 数量(BTC)
inputsValue_list = jsonpath(dict_data, "$..inputsValue")
# 手续费(BTC)
fee_list = jsonpath(dict_data, "$..fee")
print(hash_list, blockHeight_list, inputsValue_list, fee_list)
# 爬取3页
for i in range(1, 4):
print(f'正在爬取第{i}页')
offset = (i - 1) * 20
parse(offset)
python代码实现
import base64
import random
import requests
import json
from jsonpath import jsonpath
import time
def getApiKey():
# 13位的时间戳
t = int(str(time.time() * 1000)[:-5])
e = encryptApiKey()
# print('t的值', e)
t = encryptTime(t)
# print('e的值', t)
return comb(e, t)
def encryptApiKey():
t = "a2c903cc-b31e-4547-9299-b6d07b7631ab"
# e是t后28个字符组成的列表
e = [j for j in t[8:]]
# r是前8个字符组成的列表
r = [j for j in t[:8]]
# 返回值就是 e拼接r组成的字符串
e.extend(r)
return ''.join(e)
def encryptTime(t):
# e 为 (1 * t + 1111111111111)的结果转为字符串的每个字符组成的列表
e = [j for j in str(1 * t + 1111111111111)]
# r、n、o 为 随机数字(0-9)
r = str(random.randint(0, 9))
n = str(random.randint(0, 9))
o = str(random.randint(0, 9))
# 返回的结果是 e,r, n, o 拼接后的字符串
e.extend(list(r + o + n))
return ''.join(e)
def comb(t, e):
# r 是t 和"|" 和e 拼接之后的字符串
r = t + '|' + e
# 返回的是base64编码的字符串
return base64.b64encode(r.encode()).decode()
def parse(offse):
apikey = getApiKey()
print(apikey)
# print(apiKey)
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36",
'x-apiKey': apikey
}
# t 是当前时间的数据戳
t = str(time.time() * 1000)[:-5]
# print(t)
data = {
't': t,
'limit': 20,
'offset': offse
}
# 数据接口地址
url = 'https://www.oklink.com/api/explorer/v1/btc/transactionsNoRestrict'
res = requests.get(url, headers=header, params=data).text
# json字符串数据,转为python字典数据
dict_data = json.loads(res)
# print(json_data)
# 数据提取
# 交易哈希
hash_list = jsonpath(dict_data, "$..hash")
# 所在区块
blockHeight_list = jsonpath(dict_data, "$..blockHeight")
# 数量(BTC)
inputsValue_list = jsonpath(dict_data, "$..inputsValue")
# 手续费(BTC)
fee_list = jsonpath(dict_data, "$..fee")
print(hash_list, blockHeight_list, inputsValue_list, fee_list)
# 爬取3页
for i in range(1, 3):
print(f'正在爬取第{i}页')
offset = (i - 1) * 20
parse(offset)
总结:
通过这个案例,我们可以知道怎样确定数据接口地址,怎样确定加密参数所在哪个js文件以及了解js调试过程。通过调试js逆向解析的方式和Python方式均可实现请求参数解析。python实现的原理就是将js的写函数用python的方式来写。
只告诉大家学什么但是不给予方向的行为无异于耍流氓,这里也是分享我多年收藏的技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你,干货内容包括:
上面的所有资料我全部打包好了并且上传至CSDN官方,需要的点击👇获取!
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!