日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2025/3/12 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫能秒杀么_面试题之用python爬取并夕夕不同时段秒杀商品信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先上效果圖吧(因為確實也是剛入門,很多細節沒有注意到的,各位盡管提出來)

并夕夕很多時候都在不停的有秒殺商品的活動,對于價格問題,我就沒法討論了,但是人家能吸引到這么多流量,真本事還是有些的。

我只在乎他這些商品的秒殺活動我怎么把他用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爬取并夕夕不同时段秒杀商品信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。