开年后,一直在弄爬虫相关方面的工作,今天就以淘宝问大家为例,将爬虫的整套过程记录下来。总结经验,查漏补缺

如何找到问大家的网页链接

  1. 打开手机淘宝,随意浏览个宝贝
  2. 进入宝贝详情页,进入问大家主页
  3. 点击分享,复制链接

  4. 在pc打开页面 得到如下链接
https://h5.m.taobao.com/wendajia/question2017.html?refId=589773891059&pre_item_id=589773891059&ttid=227200%40taobao_android_8.4.0&sourceType=other&suid=c6b1cff4-e094-4993-b346-95f826b4c9fa&ut_sk=1.We7H9xzG%2BAYDACUebBfQq6dp_21646297_1555054673708.Copy.windvane&un=d75c7f4f3565358ee7c4cca5375f99dd&share_crt_v=1&sp_tk=77+lc0l6dWJBeWVjT0Tvv6U=&cpp=1&shareurl=true&spm=a313p.22.u6.1025058449048&short_name=h.eZDBSMw&sm=4ee92f&app=chrome

请求分析

通过谷歌浏览器开发者工具的帮助,发现数据在以下请求中

https://h5api.m.taobao.com/h5/mtop.taobao.social.feed.aggregate/1.0/?jsv=2.4.1&appKey=12574478&t=1555055055046&sign=9e6bd7ca6ecd6e303f13ad53d2fd3412&api=mtop.taobao.social.feed.aggregate&v=1.0&ecode=0&timeout=300000&timer=300000&AntiCreep=true&type=jsonp&dataType=jsonp&callback=mtopjsonp1&data=%7B%22cursor%22%3A%221%22%2C%22pageNum%22%3A%221%22%2C%22pageId%22%3A24501%2C%22env%22%3A1%2C%22bizVersion%22%3A0%2C%22params%22%3A%22%7B%5C%22refId%5C%22%3A%5C%22589773891059%5C%22%2C%5C%22namespace%5C%22%3A1%2C%5C%22pageNum%5C%22%3A1%2C%5C%22pageSize%5C%22%3A10%7D%22%7D

是个get请求,参数都放在url中

重复请求一些宝贝的问大家内容,发现参数有以下规则

  • 固定参数
sv: 2.4.1
appKey: 12574478
api: mtop.taobao.social.feed.aggregate
v: 1.0
ecode: 0
timeout: 300000
timer: 300000
AntiCreep: true
type: jsonp
dataType: jsonp
callback: mtopjsonp1
data: {"cursor":"1","pageNum":"1","pageId":24501,"env":1,"bizVersion":0,"params":"{\"refId\":\"宝贝ID\",\"namespace\":1,\"pageNum\":1,\"pageSize\":10}"}
  • 动态参数
t: 1555055055046
sign: 9e6bd7ca6ecd6e303f13ad53d2fd3412

其中t是时间戳
sign是动态的校验参数,所以难点是如何找到sign的生成规则

sign生成规则

一般说来请求的参数都是js生成,按照这个思路,通过在js资源文件中全局搜索sign及打断点的方式。果不其然,找到了相应的js代码,到目前为止,一切还是挺顺利的

从截图中可以发现
sign是由h()函数生成的,h函数的参数是以下几部分组成

d.token + "&" + i + "&" + g + "&" + c.data
# i 是上面固定参数中的 t,当前的时间戳
# g是上面固定参数中的 appKey
# c.data 是上面固定参数中的data

所以下一步要知道d.token是如何生成的

token的生成规则

还是使用在js资源文件中全局搜索token的方式,发现了相关的js代码

    n.prototype.__getTokenFromCookie = function() {var a = this.options;return a.CDR && j(y) ? a.token = j(y).split(";")[0] : a.token = a.token || j(z),a.token && (a.token = a.token.split("_")[0]),o.resolve()}

通过对这段js代码分析,发现token原来是从cookie中提取的:

_m_h5_tk=1632671ce1a89f17ac8d06525e4b5226_1555062955474

可以通过正则提出

token = re.findall(r'_m_h5_tk\=(.+?)_',cookie)[0]

至此,全部的参数都已经知道生成规则了,接下来可以编写python代码请求数据了。
这些就简单了,改天有空再贴代码上来吧,看各位需要:)
这里只提一点,可以将生成sign的h()函数的代码单独放在一个js文件中。
在python中可以通过

import execjs

在python中调用js代码,即简单又方便。

转载于:https://www.cnblogs.com/yeni/p/10696500.html

手机淘宝宝贝详情页《问大家》数据爬虫手把手实战,包含动态参数如何生成...相关推荐

  1. 弘辽科技:如何制作高转化的淘宝宝贝详情页?只需三招!

    原标题<弘辽科技:如何制作高转化的淘宝宝贝详情页?只需三招!> 商品详情页是影响店铺转化的重要的因素之一,很多商家都觉得宝贝详情页很难制作,其实制作宝贝详情页还是很简单的,首先我们就要找准 ...

  2. 淘宝宝贝详情页的优化技巧

    客户进入店铺,第一眼看到的一般都是宝贝详情页.我们知道很多客户看到产品后直接影响其购买的关键因素是宝贝详情页.宝贝的详情描述能否吸引买家是关键.所以,如果你想提高成交量,就必须优化好自己的宝贝详情页. ...

  3. 用PS做淘宝宝贝详情页及如何切图导出

    首先解释为什么要切图,因为淘宝的宝贝详情编辑器中一张图片的高度有所限制,高度一般不能超过1000左右的像素.当然宽度是750像素,这是确定的.主图是800*800.所以需要切图导出若干张,再上传~ 以 ...

  4. 淘宝宝贝详情页模板,自动生成宝贝描述模板,淘宝详情页一键生成,切换

    电子商务部门淘宝专卖店,每来一件衣服,都要人工的制作一个"宝贝说明"内页,往往每次上货一次会上几十几百件衣服,每件衣服都要做一个内页,工作量非常的巨大,而且极其容易出错,可维护性差 ...

  5. 淘宝商品详情页API接口|tb获取商品主图接口

    用到淘宝商品详情页API接口的用户,大部分是做电商软件,电商平台,商家等,使用到的比较常用的淘宝详情页API接口包括商品价格,商品主图,商品标题,SKU,店铺名称等等,还有以下几种: 淘宝商品详情页A ...

  6. Android开发之仿淘宝商品详情页

    看到有人在问如何实现淘宝商品详情页效果,手痒了就撸了一个,献上效果图 大致梳理一下思路,这里不提供源码 状态栏透明使用开源库StatusBarCompat,为了兼容手机4.4 dependencies ...

  7. 淘宝商品详情页视频接口(视频参数,sku属性参数,销量参数等页面上的数据均可以采集,支持高并发请求)

    淘宝商品详情页视频接口(视频参数,sku属性参数,销量参数等页面上的数据均可以采集,支持高并发请求)接口代码教程如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必须 ...

  8. 手机淘宝商品详情API接口开发文档

    应用场景: 通过该手机淘宝商品详情API接口开发文档可绕过登录滑块获取获标题.价格.SKU.主图.店铺名称等信息,方便电商平台.系统使用. 应用框架: 采用负载均衡的架构,提供手机淘宝商品详情API接 ...

  9. iOS app url scheme跳转到淘宝商品详情页 唤醒app

    最近涉及的一个业务,在app内的一个广告,点击打开webView,加载的是一个淘宝商品详情页,效果是打开该webView自动跳转至淘宝对应的页面,同时在自己的app仍然加载页面,点击评论等也同样能跳转 ...

最新文章

  1. OpenCV 笔记(01)— OpenCV 概念、整体架构、各模块主要功能
  2. TCP/IP详解--学习笔记(10)-TCP连接的建立与中止
  3. java.lang.NoSuchMethodError: android.os.Bundle.getString
  4. keepalived vrrp协议
  5. 第十七章 特殊成员_类的函数指针
  6. Oracle ROWNUM的陷阱
  7. 恐怖黎明稳定服务器,恐怖黎明新人联机图文教程 怎么联机-游侠网
  8. 全栈深度学习第1期:如何启动一个机器学习项目?
  9. java 保存 设置_java – 保存设置的实现
  10. 使用PowerShell监视您的Azure计算机
  11. marlab中主成分得分怎么求_雅漾恒润保湿精华乳,做完配方成分解读,我表示遗憾,决定守住我的花呗...
  12. 《赖氏经典英语语法》第三集
  13. MAC笔记本下Android 反编译apk文件最新版本
  14. UDP头部结构,UDP校验和计算
  15. 谷歌用AI技术预测病患死亡时间 到底是福是祸?
  16. JAVA经典面试题(来源于互联网)
  17. 【耀杨闯荡华儿街】(面试官)曹阿门:给我讲讲多线程;耀杨:md心态崩了~
  18. 浅谈framework之PowerManagerService
  19. awd的批量脚本 pwn_CTF线下赛AWD套路小结
  20. 电脑入米家,让小爱同学随意操控电脑开关机(需主机或软路由)

热门文章

  1. std::pi_挤压Pi:家庭音频历险记
  2. 与、或、非、异或、运算
  3. win7 android 双系统平板 p1000,优派Windows7/Android双系统ViewPad 100
  4. hibernate常见错误之Unable to locate persister:
  5. android隐藏系统ui_如何在非库存设备上获取Android的系统UI调谐器
  6. ios-自定义Storyboard与UIViewController
  7. oracle格式化命令
  8. c++ 实现线索二叉树
  9. 三位符号位如何看正负计算机,如何判断三角函数值符号的正负
  10. 关于 C4D R18 载入闪退