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

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

2141869-20200831183252917-1736541968.png

2141869-20200831183141062-1285480482.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

先拿抓包看看,

2141869-20200831184115924-963387185.png

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

2141869-20200831184359561-533865752.png

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

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

2141869-20200831200200391-1031628848.png

2141869-20200831200221684-1924866087.png

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

2141869-20200831200630347-1739163254.png

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

2141869-20200831201052002-353342719.png

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

2141869-20200831201301967-936796789.png

那么我用代码实现一下:

2141869-20200831202844234-1643902656.png

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

2141869-20200831205138959-879423124.png

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

2141869-20200831205838968-1893877596.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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html 怎么让tr的css覆盖td的_通达OA上传漏洞之变量覆盖分析

作者&#xff1a;kw0ng开始通达OA上传到包含漏洞分析的文章已经有很多&#xff0c;本文重点分析&#xff0c;文件上传处决定路径信息是否回显的UPLOAD_MODE参数是怎么传递的。代码分析触发文件上传点位于/ispirit/im/upload.php中&#xff0c;服务端在接收文件信息的同时还需要…

怎么看电脑的hdmi是输出还是输入_高清hdmi矩阵切换器4进4出音视频方案介绍景阳华泰科技...

高清hdmi矩阵切换器4进4出多少钱&#xff1f;这就需要了解您需要哪种4进4出矩阵&#xff01;景阳华泰科技生产的矩阵分为两种形式&#xff0c;一种是我们近几十年来一直使用的一体机&#xff0c;高清HDMI矩阵切换器4进4出采用一体机结构&#xff0c;经济实惠&#xff0c;功能较…

专业音频如何把电平转换成dbu_谭俊峰|录课、买麦,你应该了解的音频常识

近来&#xff0c;有打算录录课、吹吹牛&#xff0c;于是想升级一下硬件。既然要录音&#xff0c;那搞个好一点儿的麦克风总是必要的。于是&#xff0c;上网去查。不查不知道&#xff0c;一查吓一跳。为啥呢&#xff1f;既不为产品的琳琅满目&#xff0c;也不为价格的云泥之别&a…

android 自定义进度条_第一百八十九回:Android中自定义ProgressBar三

各位看官们大家好&#xff0c;上一回中咱们说的是Android中自定义ProgressBar的例子&#xff0c;这一回咱们继续说该例子。闲话休提&#xff0c;言归正转。让我们一起Talk Android吧&#xff01;看官们&#xff0c;我们在上一回是通过自定义PrgressBar的方式给它添加了文字&…

沉降观测曲线图 沉降观测汇总_这些沉降观测要求,工程人必须掌握!

1沉降观测的基本要求 1)仪器设备、人员素质的要求根据沉降观测精度要求高的特点&#xff0c;为能精确地反映出建(构)筑物在不断加荷下的沉降情况&#xff0c;一般规定测量的误差应小于变形值的1/10—1/20&#xff0c;为此要求沉降观测应使用精密水准仪(S1或S05级)&#xff0c;水…

rgb红色范围_【论文阅读18】RGB-D Object-Oriented Semantic Mapping

主要内容基于RGB-D数据的语义建图&#xff08;SLAM帮助语义&#xff09;。具体过程如下首先利用SSD执行单帧RGB图片&#xff08;2D&#xff09;物体检测。接着基于检测结果和深度信息&#xff0c;利用3D分割算法进一步分割3D点云。最终利用ORB-SLAM2的相机位姿信息将每帧的3D点…

7价 半导体掺杂_掺杂工艺(一)

概述半导体材料的独特性质之一是它们的导电性和导电类型(N型或P型)能被产生和控制。在本章中&#xff0c;描述在晶圆内和表面上特别的小块导电区和PN结的形成。介绍扩散和离子注入两种掺杂技术的原理和工艺。简介使晶体管和二极管工作的结构就是PN结。结(junction)就是富含电子…

数据增强_imgaug图像数据增强必备工具

导读我们经常会遇到训练模型时数据不够的情况&#xff0c;而且很多时候无法再收集到更多的数据&#xff0c;只能通过做一些数据增强或者其它的方法来合成一些数据。常用的数据增强方式有裁剪、旋转、缩放、亮度对比度色度饱和度变换、仿射变换、透视变换等&#xff0c;这篇文章…

深度学习多模态融合_3D目标检测多模态融合综述

0前言本篇文章主要想对目前处于探索阶段的3D目标检测中多模态融合的方法做一个简单的综述&#xff0c;主要内容为对目前几篇几篇研究工作的总结和对这个研究方面的一些思考。在前面的一些文章中&#xff0c;笔者已经介绍到了多模态融合的含义是将多种传感器数据融合。在3D目标检…

自适应宽_移动端实现自适应缩放界面的方法汇总

作者 | 唐宋元明清2188来源 | http://www.cnblogs.com/kybs0/在开发App端的网页时&#xff0c;要适配iphone、ipad、ipod、安卓等各种机型&#xff0c;一般是直接使用em、px转em、界面缩放。本章是通过将界面缩放&#xff0c;等比例显示在各机型上。过程中遇到了些问题和大坑~然…

Java继承简介

继承是面向对象的三大特征之一。继承和现实生活中的“继承”的相似之处是保留一些父辈的特性&#xff0c;从而减少代码冗余&#xff0c;提高程序运行效率。 Java 中的继承就是在已经存在类的基础上进行扩展&#xff0c;从而产生新的类。已经存在的类称为父类、基类或超类&…

各种说明方法的答题格式_初中语文阅读答题公式 语文阅读理解万能公式大全...

很多人想知道初中语文阅读理解有哪些答题公式&#xff0c;语文阅读理解的万能公式有哪些呢?下面小编为大家介绍一下!初中语文阅读理解答题公式大全(一)某句话在文中的作用&#xff1a;1、文首&#xff1a;开篇点题;渲染气氛(散文)&#xff0c;埋下伏笔(记叙类文章)&#xff0c…

esp8266手机端网络调试助手_esp8266定时控制

要实现定时控制&#xff0c;需要先实现手动控制&#xff0c;或者app控制。实测定时精度&#xff0c;北京时间&#xff0c;误差不超过1秒。第一、远程App控制或手动控制下载esp8266示例程序下载地址: 点击下载本demo 是利用arduino IDE开发&#xff0c;关于arduino IDE 的ESP826…

集成学习之Adaboost(提升方法)

Adaboost 提升方法就是从弱学习器出发&#xff0c;反复学习&#xff0c;得到一系列弱分类器&#xff08;基本分类器&#xff09;&#xff0c;然后组合这些弱分类器&#xff0c;构成一个强分类器。 基本思路 待解决问题 1、每一轮如何改变训练数据的权值或概率分布 2、如何将…

93没有了_杭州1米93程序员征婚贴火了!年薪50万,孩子随妈姓,没有皇位要继承...

文丨三秋桂子自从二胎政策开放以来&#xff0c;很多宝妈都希望二宝能随自己姓&#xff0c;但有些男方家庭却不同意&#xff0c;双方就孩子的“冠名权”一事争论不休。可最近有位小伙却因为征婚贴火了&#xff0c;原因有两个&#xff0c;一是小伙瞩目的身高&#xff0c;二是小伙…

李航《统计学习方法》之HMM隐马尔可夫模型

李航《统计学习方法》之HMM隐马尔可夫模型 文章目录前言一、基本概念1、语言描述&#xff1a;2、符号表示3、基本假设4、例子5、隐马尔可夫模型解决的三个基本问题二、概率计算算法1、向前算法算法&#xff1a;例题2、向后算法三、学习算法1、监督学习算法背景方法2、无监督学习…

6000毫安以上智能手机_展望2021年智能手机市场:这5大技术要爆发

2020年是极不平凡的一年&#xff0c;在黑天鹅、政治动荡等事件的冲击下&#xff0c;许多行业都按下了暂停键&#xff0c;智能手机行业自然也不例外。销售渠道受阻、供应链生产紧张&#xff0c;导致智能手机市场整体出货量呈现持续下跌的状况&#xff0c;严峻的市场行情让智能手…

无监督学习之聚类方法(K-Means、层次聚类)

一、导入 无监督学习中需要对无标记样本进行训练学习进而找到数据的内在性质和逻辑结构&#xff0c;聚类方法是为了为无监督学习的数据分析提供的基础学习方法。 聚类将数据集划分为若干个子集&#xff08;每个子集称为类或者簇&#xff09;&#xff0c;如果一个样本只属于一个…

js调用python接口_JavaScript如何调用Python后端服务

欢迎关注【无量测试之道】公众号&#xff0c;回复【领取资源】, Python编程学习资源干货、 PythonAppium框架APP的UI自动化、 PythonSelenium框架Web的UI自动化、 PythonUnittest框架API自动化、 资源和代码 免费送啦~ 文章下方有公众号二维码&#xff0c;可直接微信扫一扫关注…

详细地图_一目了然:蒙城学区划分详细地图

从明天(8月5日)起&#xff0c;小学一年级&#xff0c;初中一年级可在网上注册、报名了。根据区域内适龄学生人数、学校分布、学校规模、班额规定、交通状况等因素&#xff0c;以街道、路段、门牌号、居住小区、村组等构成要件&#xff0c;按照确保公平和免试就近入学的原则&…