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

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

我只在乎他这些商品的秒杀活动我怎么把他用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

先拿抓包看看,

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

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

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

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

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

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

那么我用代码实现一下:

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

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

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

# -*-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()

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

  1. Python爬虫学习第三章-4.3-使用xpath解析爬取全国城市名称

    Python爬虫学习第三章-4.3-使用xpath解析爬取全国城市名称   这一节主要是使用xpath解析爬取全国城市名称 这里使用的网址是:空气质量历史数据查询   这一个案例体现的点主要是xpat ...

  2. 【爬虫+数据可视化毕业设计:英雄联盟数据爬取及可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩】

    [爬虫+数据可视化毕业设计:英雄联盟数据爬取及可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩] https://b23.tv/TIoy6hj

  3. 【【数据可视化毕业设计:差旅数据可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩】-哔哩哔哩】 https://b23.tv/iTt30QG

    [[数据可视化毕业设计:差旅数据可视化分析,python爬虫可视化/数据分析/大数据/大数据屏/数据挖掘/数据爬取,程序开发-哔哩哔哩]-哔哩哔哩] https://b23.tv/iTt30QG ht ...

  4. python爬虫工资高吗_六星教育:Python爬虫工作好做吗?爬虫工资高吗?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 六星教育:Python爬虫工作好做吗?爬虫工资高吗? 随着人工智能火热发展,python的学习者也越来越多,网络关于Python爬虫教程也越来越多,Pyt ...

  5. python爬虫教程(五):解析库bs4及爬取实例

    大家好,今天分享的是解析库中的bs4,本文章的目的是让你知道如何使用bs4,并且附带爬取实例. 目录 一.bs4简介 二.安装及初始印象 1.安装 2.解析器 3.初始印象 三.选择元素的方法 1.方 ...

  6. Python爬虫入门【3】:美空网数据爬取

    美空网数据----简介 从今天开始,我们尝试用2篇博客的内容量,搞定一个网站叫做"美空网"网址为:http://www.moko.cc/, 这个网站我分析了一下,我们要爬取的图片在 ...

  7. python爬虫之Scrapy介绍八——Scrapy-分布式(以爬取京东读书为示例)

    Scrapy-分布式(scrapy-redis)介绍 1 Scrapy-分布式介绍 1.1 Scrapy-redis工作原理 1.2 Scrapy-redis 安装和基本使用 1.2.1 安装 1.2 ...

  8. python爬虫你们最爱的YY小姐姐,这不爬取下来看看?

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 ( 想要学习Python?Python学习交流群:1039649593,满足你的需 ...

  9. python爬虫豆瓣电影按电影类型,豆瓣电影---按分类爬取

    全部代码以及分析见GitHub:https://github.com/dta0502/douban-movie 我突然想看下有什么电影可以看.由于我偏爱剧情类电影,因此我用Python爬虫来爬取剧情类 ...

最新文章

  1. 从零开始用Python实现k近邻算法(附代码、数据集)
  2. 编程面试过程中最常见的10大算法
  3. OpenCV新手入门,如何用它平移缩放和旋转图片
  4. rand和srand
  5. 保存oracle数据之后乱码,Oracle保存中文数据和读取数据页面显示乱码解决方案
  6. C语言中return和exit的区别
  7. 把东西从学校搬回来了
  8. SpringBoot项目从Git拉取代码并完成编译打包启动的sh自动脚本
  9. IPv6 gre隧道、路由协议综合实验(华为设备)
  10. OpenGL ES2 0 – Iphone开发指引
  11. AltiumDesigner20绘制51单片机最小系统原理图详细流程
  12. 游戏是怎么赚钱的 - 科普篇
  13. 苹果开发:开发证书都显示“此证书的签发者无效”的解决方法
  14. android app实现多种语音,基于Android的语音助手APP
  15. (可能是)最后一次参加同学婚礼了
  16. JAVA 如何将class文件转换成java文件
  17. vue项目引入高德地图
  18. 怎么抠图图片?抠图图片这样做就可以完成
  19. Centos7加入AD域并通过域账号登录
  20. 调用小程序OCR插件识别身份证信息

热门文章

  1. 单片机外部中断实验C语言程序,STC89C52单片机外部中断0实验
  2. java解析多层嵌套json字符串
  3. SpringBoot与日志配置
  4. Java数据库篇8——索引、视图、存储过程、触发器
  5. c语言树莓派音乐播放器,使用web端来控制我的树莓派播放音乐
  6. c语言的表达式2 4 6 8的值,C语言程序设计测试题二
  7. Iterator 和 ListIterator 的区别
  8. from mysql partition select_玩转select条件查询,避免踩坑
  9. php架在底部页面,页脚始终保持在页面底部的网页布局方法
  10. 计算机的外部设备 硬盘,外部设备采用SMB协议想共享电脑硬盘下的文件