python 抓包秒杀_面试题之用python爬取并夕夕不同时段秒杀商品信息

2023-05-16

先上效果图吧(因为确实也是刚入门,很多细节没有注意到的,各位尽管提出来)

f36b8d8235da815e95cc8d18d5fe5658.png

ffafa5200d959230894fb59ecd7164e7.png

并夕夕很多时候都在不停的有秒杀商品的活动,对于价格问题,我就没法讨论了,但是人家能吸引到这么多流量,真本事还是有些的。

我只在乎他这些商品的秒杀活动我怎么把他用python爬取下来。

我先提供下url吧:https://mobile.yangkeduo.com/spike.html?__rp_name=spike_v3&_pdd_tc=ffffff&refer_share_uid=5112141669494&refer_share_id=PESOLudc1rQRf0tuIcRLKTfGwbMzRILK&_wv=41729&refer_share_channel=copy_link&_pdd_fs=1&share_uid=5112141669494&_pdd_nc=d4291d&_pdd_sbs=1&_wvx=10

先拿抓包看看,

e496468f8d7b8812d8347528cc8506dd.png

我们知道requests请求的抓取是抓取的浏览器的第一个请求,拿来看看里面有没有我想要的信息。

e63f155f49d168c021bfe98254e96c30.png

哦豁,第一个请求里面并没有我要的东西,那么光只是requests.get(url)是拿不到东西的,那就得找找问题出在哪了。

实际上他的页面请求是动态的,在network里可以看到,我只要网页有往下滑,就会有新的请求在进行,那么就是XHR的问题了,看下XHR:

69dd92c235bdc82d9fdefc032c9d4d6e.png

cd8b31d04a6e0aca058b3fa293cd9726.png

里面有个这个promotion?啥啥啥的,点开这个的preview,发现了不得了的东西

32dc28df7c8bcd9181e69aa02501bc9f.png

这个XHR里面包含了我们所有要找的东西,商品名,商品链接,商品图,价格等等,只是一个promotion只包括20个商品,所以网页再往后加载又会有新的promotion把信息带给我:

a764e4b3f2d95aa10f46f1e44ec9c8eb.png

那我们的思路也有了,requests.get()请求到这些XHR,通过这几个promotion的headers和params参数我们定位到他,但requests.get()每此只能请求一个XHR,上面这个图就能解决问题,这三个XHR的区别只在于他们的“offset:”参数不一样,第一个的是“offset:0”,第二个是“offset:20”,第三个是40,那我们就有办法了。

50a18f72641cd1a700d35540928e13aa.png

那么我用代码实现一下:

f483fb799ed945be345c00de3cc35372.png

每次请求让page递增,然后乘以20就行了,

8c474bedbe30ec8ee6385854ade7cb68.png

因为商品信息里存放的都是服务器的时间(以秒来计数的,例如:1598878800),我们要存下来的应该是21:00,所以还要对时间读取之后做替换。

3a5150db027c3e7cafee34eb1401c924.png

我把下面我的整个程序留在下面吧,还是有很多需要改进的地方的,请见谅:

# -*-coding = utf-8 -*-

# @Time :2020/8/31 8:30

# @Author : jamesenh

# @File : 拼多多.py

# @Software: PyCharm

import requests,time,csv

from bs4 import BeautifulSoup

def get_goods(url,headers,params): #从url获取商品信息,再拿csv存下来

promotion = requests.get(url,headers=headers,params=params)

promotion.encoding = 'unicode_escape' #因为爬到reseponse是以’unicode‘编码方式,要转码成中文

promotion_json = promotion.json()

# print(promotion_json)

times = start_time(promotion_json) #获取各个时间段的服务器对应时间

items = promotion_json['items'] #获取商品列表

# print(items)

# print(type(items))

for item in items: #分别提取出商品名,秒杀价,秒杀开始时间等

good_name = item['data']['goods_name']

good_price_old = item['data']['group_price_original']*0.01

good_price_mini = item['data']['price']*0.01

good_time = item['data']['start_time']

good_url_one = item['data']['link_url']

good_url = 'mobile.yangkeduo.com/'+good_url_one

good_jpeg = item['data']['hd_thumb_url']

good_time = change_time(times,good_time)

save_goods(good_name,good_price_old,good_price_mini,good_time,good_url,good_jpeg) #

print(good_name,good_price_old,good_price_mini,good_time,good_url,good_jpeg)

def get_url(page,time):

headers = {

'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36'

}

url = 'https://mobile.yangkeduo.com/proxy/api/api/spike/new/channel/promotion?'

# page = 0

params = {

'pdduid': '0',

'offset':page*20,

'limit':'20',

'tab': time,

'day_type': '2'

}

# page +=1

return url,headers,params

def save_goods(name,old,price,time,url,jpeg):

with open('拼多多.csv','a',newline='')as f:

writer = csv.writer(f)

writer.writerow([name,old,price,time,url,jpeg])

def start_time(promotion_json):

times = promotion_json['tabs']

# time = ''.join(time)

# print(times)

# print(type(times))

return times

def change_time(times,time):

for each in times:

if time == each['id']:

time = each['name']

return time

def main():

with open('拼多多.csv','w',newline='')as f:

write = csv.writer(f)

write.writerow(['商品名','商品原价','商品秒杀价','商品秒杀时间','商品详情链接','商品头图链接'])

time1 = ['1598846400']

num = 1

i=0

while i <1598886000:

i = int(1598846400)+int(3600*num)

# print(i)

time1.append(i)

num +=1

# print(start_time)

for i in time1:

page = 0

while page <3:

url,headers,params = get_url(page,i)

time.sleep(5)

page += 1

get_goods(url, headers, params)

if __name__ == '__main__':

main()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 抓包秒杀_面试题之用python爬取并夕夕不同时段秒杀商品信息 的相关文章

  • linux下修改hostid

    linux下修改hostid 网上有很多版本 xff0c 总结了这几点 1 gt 一个以16进制显示的int字符串 xff1b 2 gt 配置文件 etc hostid 如果有值 xff0c 输出 xff0c 结束 3 gt 从hostna
  • 21分钟学会写编译器

    本文来自网易云社区 知乎上有一种说法是 编译器 图形学 操作系统是程序员的三大浪漫 先不管这个说法是对是错 xff0c 我们假设一个程序员在国内互联网公司写代码 xff0c 业余时间不看相关书籍 那么三年之后 xff0c 他的这些知识会比在
  • 解决idea打包出现中文乱码的问题

    这主要是maven编译时编码问题导致的 在Intellij的settings中maven的runner配置中将原有的配置 DarchetypeCatalog 61 internal修改设置它的VM Options为 DarchetypeCa
  • 局部使用element-ui自定义主题实践

    背景 内部系统虽然使用了element ui xff0c 但同时又混杂了多种风格的样式和各自写的通用组件 xff0c 在参与新功能开发时 xff0c 产品经理的设计需要以绿色为主题色 xff0c 看到element官网有个自定义主题 xff
  • windows server 2012 R2 远程桌面授权模式尚未配置

    windows server 2012 R2 远程桌面授权模式尚未配置 xff0c 远程桌面服务将在120天内停止工作 如何破解这个宽限期 xff0c 目前企业7位协议号码均不包含2012 R2以上授权 那么只能蛋疼的 破解 咯 解决方法
  • LPAD

    语法 span class pln style color rgb 0 0 0 VARCHAR LPAD span span class pun style color rgb 102 102 0 span span class pln s
  • Python 之 sqlalchemy更新数据

    表结构 xff1a 代码 xff1a Author Kang import sqlalchemy from sqlalchemy import create engine from sqlalchemy ext declarative im
  • php curl 设置请求头headers和请求体body

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 啥也不说 xff0c 直接上代码 我这里是post请求 url 61 34 http www example com 34 headers数组内的格式 headers 61
  • 华为路由器双出口负载均衡+备份

    一个网段内 xff0c IP地址 xff08 末位奇数 xff09 走电信 xff0c IP地址 xff08 末位偶数 xff09 走联通 当某个运营商不可达时 xff0c 自动切换 通过NQA来确定运营商是否可达 xff0c 并与流行为
  • office2013VOL版下载资源链接

    office2013VOL版下载资源链接 软件名称 xff1a office2013VOL软件大小 xff1a 914 5 810 7 713 3 801 2 M 软件语言 xff1a 简中软件性质 xff1a 免费 xff08 需要mak
  • 使用 TRY/CATCH 语句解决 SQL Server 2005 死锁

    对于今天的 RDBMS 体系结构而言 xff0c 死锁难以避免 在高容量的 OLTP 环境中更是极为普遍 正是由于 NET 的公共语言运行库 CLR 的出现 xff0c SQL Server 2005 才得以为开发人员提供一种新的错误处理方
  • delphi之找色和色块

    找色和色块 xff0c 是模拟的重要基础 有时候 xff0c 需要确定某点是否出现某种颜色 xff0c 有时候需要判断色块是否出现在某位置 有时候 xff0c 需要看范围内是否出现色块 function IsColor bmp TBitma
  • 局域网组建(二) OpenWrt作为一般节点接入WireGuard组建的跨地域局域网

    本实验将OpenWrt作为一般节点 xff08 不提供网关功能的客户端 xff09 接入WireGuard组建的跨地域局域网 xff0c 实现与局域网内其他机器的通信 由于OpenWrt也具备NAT功能 xff0c 因此OpenWrt下的设
  • 简历上如果出现过于高大上的项目,反而过犹不及:再论如何通过项目引出技术...

    我看了前几天些的博文 xff0c 分析若干没面试机会和没体现实力的简历 xff0c 就想起了做技术面试官时的一些往事 我见过有些简历 xff0c 上面列出的项目描述非常高大上 xff0c 比如用到了xx机器学习技术 xff0c 或者在一个项
  • VNC 服务器配置和调试 含 VNC同步TTY7

    RHCE 学习笔记 VNC 服务器配置和调试 服务包 xff1a Server xff1a vnc server 4 1 2 14 el5 3 1 vnc 4 1 2 14 el5 3 1 Client vnc 4 1 2 14 el5 3
  • Ubuntu pip3安装uwsgi报错

    笔者在ubuntu16 04使用pip3安装uwsgi时报错了 xff0c 报错信息如下 leslie 64 leslie TWS sudo pip3 tall uwsgi The directory 39 home leslie cach
  • (水一下)Linux启动步骤(面试题)

    1 加载并初始化Linux内核 2 配置硬件设备 3 内核创建自发进程 4 由用户决定是否进入手工引导模式 5 init进程执行系统启动脚本 6 进入多用户模式 转载于 https blog 51cto com 12942223 24086
  • 闲话过程改进和CMMI,敏捷等

    从前有一个大组织 DoD xff0c 软件开发的活很多 xff0c 自己干不了 xff0c 就找了很多小企业来帮他做 结果 xff1a 有的不能按时干完 xff0c 有的干的活太糙 xff0c 最操蛋的是有的拿了钱开始干 xff0c 该交活
  • 在linux下安装Avria(小红伞)

    1 下载AntiVir PersonalEdition Classic for linux http www free av com 2 解压 tar zxvf antivir tar gz 3 进入解压后的文件夹 sudo install
  • 各大搜索引擎提交网站的入口地址

    搜索引擎网站收录地址大全 xff1a 百度搜索网站登录口 xff1a http www baidu com search url submit html Google网站登录口 xff1a http www google com addur

随机推荐