python爬虫案例(电商平台)

阿里巴巴平台request模块获取数据

  • 前言
  • 一、逆向解析阿里巴巴平台详情页面的sign值
  • 二、在请求头中加入sign值获取数据
    • 1>获取评论成交数数据
    • 2>效果展示
  • 三、总结

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理


一、逆向解析阿里巴巴平台详情页面的sign值

先找一个商品详情页面,根据页面上显示得数据去寻找该路由,然后利用谷歌自带得debug模式一步步去分析js加载情况…

获取到阿里巴巴生成的sign值地js函数,输入值加入商品得id就可以计算得到阿里巴巴得sign值
python代码如下:

import js2pydef get_des_psswd(data):jsstr = get_js()# 使用获取上下js2py生成一个上下文环境context = js2py.EvalJs()context.execute(jsstr)# ctx = execjs.compile(jsstr)  # 加载JS文件return (context.h(data))# return (ctx.call('h', data))  # 调用js方法  第一个参数是JS的方法名,后面的data和key是js方法的参数def get_js():f = open("./des.js", 'r', encoding='utf-8')  # 打开JS文件line = f.readline()htmlstr = ''while line:htmlstr = htmlstr + lineline = f.readline()return htmlstrif __name__ == '__main__':  # 66f15958d3db6ded2e31b63c6dff914e_1637574478506print(get_des_psswd('f3e524beffeb74de6684f41df6206d83&1638771084690&12474478&{\"fcGroup\":\"offer-cbu\",\"fcName\":\"offerdetail-service\",\"fcArgs\":\"{\\\"serviceName\\\":\\\"offerFavoriteService\\\",\\\"params\\\":{\\\"offerId\\\":598029856572}}\"}'))

二、在请求头中加入sign值获取数据

1>获取评论成交数数据

代码如下(通过在请求头中加入sign数据,可以有效访问到接口里面得数据,切换IP可以重新获取):

# 评论获取
def comments(b, seller_id, seller_member_id):global g# 获取时间戳t = time.time()good_collection_time = int(round(t * 1000))  # 毫秒级时间戳good_collection_token = unqueue_cookies()# 分割获取token值good_collection_token = good_collection_token['_m_h5_tk'].split('_')[0]# 拼接sign值进行js加密sign = good_collection_token + '&' + str(good_collection_time) + '&12574478&' + '{"fcGroup":"offer-cbu","fcName":"offerdetail-service","fcArgs":"{\\"serviceName\\":\\"offerSatisfactionService\\",\\"params\\":{\\"memberId\\":\\"%s\\",\\"sellerId\\":%s,\\"offerId\\":%s,\\"isSignedForTm\\":false}}"}' % (seller_member_id, seller_id, str(b['Z']))# 将sign值加密sign = get_des_psswd(sign)# 发送请求try:data = {"sellerId\\":str(b['Z'])}   # 拼接商品id数据data = quote(data, 'utf-8')good_comments_url = 'https://h5api.m.1688.com/h5/mtop.mbox.fc.common.gateway/1.0/?jsv=2.4.11&appKey=12574478&t=' + str(good_collection_time) + '&sign=' + sign + '&api=mtop.mbox.fc.common.gateway&v=1.0&type=jsonp&isSec=0&timeout=20000&dataType=jsonp&callback=mtopjsonp4&data=' + datacomments_count = 0while True:try:# 获取接口数据headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36","referer": 'https://detail.1688.com/','cookie': cookies()}SESSION.keep_alive = False  # 关闭多余连接comments_response_html = SESSION.get(good_comments_url,headers=headers, timeout=5, verify=False, proxies=g[0])good_comments = comments_response_html.text.split('(')good_comments = good_comments[1].split(')')[0]good_comments = json.loads(good_comments)good_comment = good_comments['data']['result']['totalsStr']breakexcept Exception as e:print(e)if comments_count < 2:g = proxy_ip()comments_count += 1continueelse:comments_count += 1continueexcept Exception as g:print(g)good_comments = ''return good_comment

2>效果展示

三、总结

在这小编分享一波2022最新的Python教程。获取方式,私信小编.。。。

阿里巴巴逆向js,request模块获取数据相关推荐

  1. python中request方法_如何使用python语言中的request模块获取代码

    在python设计语言中,可以使用request第三方包获取请求的参数等,可以利用请求路径获取静态代码,查看相关请求参数和指标等.下面利用一个实例说明request模块获取代码和参数,操作如下: 工具 ...

  2. JS从后台获取数据,前台动态添加tr标签中的td标签

    功能描述: 要求从后台查询该省份的所有城市,然后动态的再前台固定的tr标签中添加相应的td标签来展示城市基本信息: 文章目录 #一.前台jsp及js源码 jsp:在固定的tr标签中添加一个id,通过j ...

  3. Request对象获取数据

    1. Request对象 Request(.NET中的内置对象)---从客户端接收消息 获取前端的数据;比如form表单中的内容 ,cookis,表头信息,浏览器种类 2. 集合(对数据的封装) 对象 ...

  4. JS中使用${}获取数据

    使用` ` 键 获取${}中的数据,不是单引号.(注:使用英文,左上角的~键) $("button").click(function(){$.get(`/try/ajax/demo ...

  5. request获取数据3种方法

    [ASP中,Request 对象获取数据的3种方法:] 1.Request.Form:获取以POST方式提交的数据(接收Form提交来的数据): 2.Request.QueryString:获取地址栏 ...

  6. axios的响应拦截器 - 错误统一处理 / 获取数据繁琐

    1. 问题 登录时,填写错误的用户名密码,没有错误提示(没有进入catch分支) 获取ajax的返回结果比较麻烦:res.data.data.xxxx 2.解决登录失败不报错的问题 2.1 分析原因 ...

  7. node.js的request模块

    request模块让http请求变的更加简单.最简单的一个示例: 1: var request = require('request'); 2: 3: request('http://www.goog ...

  8. 前端js调用后端API获取数据的三种方法(2022.7.25)

    前端js调用后台API获取数据的三种方法(2022.7.25) 前言 需求分析 一个Get实例 浏览器请求 SoapUI软件请求 一个Post实例 浏览器请求 SoapUI软件请求 1.Http简介( ...

  9. vue --- 从模块从父元素获取数据

    vue的精彩之处在于其组件的可复用性.下面谈谈组件(component)如何从父元素获取数据 模块引用 首先说说,如何引用模块 <div id="app"><my ...

最新文章

  1. 费米悖论的三十种解释
  2. 微信公众平台开发:进阶篇(Web App开发入门)
  3. python——动态的增加实例方法、类方法、静态方法
  4. Android中通过自定义签名控件实现手写签名
  5. iOS中Block的基础用法
  6. C语言中指针数组和数组指针
  7. ORACLE数据泵还原(IMPDP命令)【转】
  8. android studio撤回快捷键,Android Studio常用快捷键、Android Studio快捷键大全
  9. 华人AI学者大盘点:清华培养了最多的高层次人才,韩家炜、吴恩达论文被引数“登顶”
  10. 亿图图示 软件下载与安装 20200715
  11. NCL中绘制中国任意省份的精确地图
  12. OCR文字识别经典论文详解
  13. C. Product 1 Modulo N
  14. 轻言壁纸微信小程序源码
  15. Luxurious Houses - CodeForces - 581B
  16. 旅游企业该怎么进行网络品牌推广呢?如何宣传和规划旅游商品?
  17. Android多线程断点续传下载原理及实现,移动开发工程师简历
  18. 安卓开发SDK等工具下载地址
  19. 点云库pcl从入门到精通 第十章
  20. Integrate就医服务平台

热门文章

  1. Yes yes yes yes yes yes
  2. CVPR 2018 | 腾讯AI Lab关注的三大方向与55篇论文
  3. 三种实现分布式锁的方式
  4. 【胖虎的逆向之路】02——Android整体加壳原理详解实现
  5. 中国大陆银行业金融机构法人名单(截至2020年末)
  6. FPGA---用FPGA加速机器学习应用(XILINX) 内含与CPU,GPU比较 (2017xilinx的宣讲)
  7. Modulo (mathematics)
  8. 美国历史最大10宗破产保护
  9. CLI 发行uni-app到微信小程序,如何不打开微信开发者工具去进行小程序发布?
  10. Construct2 第一次制作的小游戏