分享一个开源项目:TSDK。地址在阅读原文里。
淘宝爬虫SDK,用于淘宝开放平台或淘宝登录爬取
from TSDK.mTop import Client
top = Client()
#获取淘宝二维码,可以通过扫码登录淘宝
umid_token = top.getUmidToken()
res = top.login(umid_token)
print(res.text)
data = json.loads(res.text)
thr = top.checkState(data['lgToken'],umid_token,30)
thr.start()
#设置开放平台的appkey和密钥,然后传递API和配置可以直接获取数据
top.open.config['appkey'] = ''
top.open.config['appsecret'] = ''
res = top.open.execute('taobao.tbk.item.get',{
'fields':'num_iid,title,pict_url,small_images,reserve_price,zk_final_price,user_type,provcity,item_url,seller_id,volume,nick',
'q':'女装',
'cat':'16,18'
})
print(res.text)
#获取宝贝详情
res = top.H5.execute({
'api':'mtop.taobao.detail.getdetail',
'v':'6.0',
'jsv':'2.4.8',
'dataType':'json',
'type':'json',
'ttid':'2017%40taobao_h5_6.6.0',
'AntiCreep':'true',
'data':{
'itemNumId':'585559878166'
}
})
print(res.text)
#API请求日志的记录,SDK对象继承自requests的Session类,可以通过添加hook来获取响应
#请参考requests高级用法:http://docs.python-requests.org/zh_CN/latest/user/advanced.html
def console(res):
print(res.url)
print(res.text)
top.H5.hooks['response'] = [console]
from requests.cookies import RequestsCookieJar
dt = top.H5.cookies.get_dict('.login.taobao.com')
jar = RequestsCookieJar()
for name in dt:
jar.set(name,dt[name],path='/',domain='.login.taobao.com')
# 通过设置cookie来共享登录状态
top.cookies.update(jar)
此API设定还不完全,不过通过观察请求的方式可以发现加密放在了请求头里面,原本的链接上面没有的加密,不过也不一定,有的请求还是有携带加密参数的,不过之后的API设定应该会简单些,请求头的设置可以动态设置和计算,不过现在加密方式未解决,还未破解出来
测试了淘宝短信登录,请求中需要一个ua参数,这个参数是算法生成出来的,经过测试应该是根据平台登录的浏览器环境记录下来,所以如果ua参数不对的话那么就登录不了,会出现滑动验证 如果要进行短信登录测试的话,替换ua参数为你自己浏览器上面的ua参数,在源码中修改
项目有很多可以参考的内容
本文分享自 Python爬虫与算法进阶 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!