寫在最前面※
【關于商品審核時間】
工作日
10:30之前提交審核的,11:00之前審完
15:00之前提交審核的,15:30之前審完
20:00之前提交審核的,20:30之前審完
周末/公共假期
20:00之前提交審核的,20:30之前審完
如果審核遇到問題,請將審核未通過的商品編號發到群里(如:6535408016756310200,可在商品管理中查看),我們會集中為大家處理。
商品前端展示與后臺錄入內容對照示例:
點擊“商品”—“創建商品”
支付方式:在線支付。目前小店僅支持這一種支付方式
商品URL:(此項選填)可填入淘寶/天貓(其他平臺暫不支持)商品鏈接后,點擊獲取寶貝詳情,自動獲取已有寶貝已有淘寶/天貓商品信息
-效果如圖【抓取后的信息請認真核對,如有順序顛倒、圖片未能正常抓取 請手動補充調整】
產品標題:準確簡潔的描述商品,如:不銹鋼真空保溫杯,長效保溫,支持驗貨
※如果是虛擬商品,請在標題寫清楚【線上發貨,無物流信息】
賣點:四個漢字(前端不展示)
商家推薦語:用一句話描述并推薦一下商品的優點,如:大分量雨前龍井茶 (前端不展示)
商品類目:請根據商品屬性選擇,可參考:類目對應表:https://shimo.im/sheet/AbmrMa54LOgps9qT。不同類目涉及的商品規格信息不同。
商品規格:請按實際情況填寫
價格:需不高于市場同類商品價格,并且在后續設置的訂單套餐價格范圍內
原價:不填
傭金比例:0
運費設置:運費默認為包郵,如果您設置運費的需求,請新建運費模板并選擇。
※如何新建運費模板?
1.選擇【運費設置】右邊的【新建運費模板】
或者進入【物流】-【運費模板】新建運費模板
2.設置模板名稱、寶貝地址
模板名稱:請根據需求隨意設置
寶貝地址:寶貝地址為商家發貨地址,請選擇商品上線后的實際發貨地
3.選擇計價方式
按件數計價:選擇按件數計價,填寫默認運費,如 1件10元,沒增加1件,增加運費2元。
按重量計價:選擇按件數計價,填寫默認運費,如 1kg10元,每增加1kg,增加運費2元。
4.設置指定地區運費
如果有些地區不采用默認運費,需要單獨設置。請點擊【為指定地區設置運費】,設置特定地區的運費規則。計價方式 與之前選擇的計價方式一致。
注意:此項不是必須設置,如統一運費規則,不需要設置此項。
5.點擊【提交】完成新增運費模板
主圖要求如下:
1.必須上傳5張圖片
2.圖片必須為正方形(長寬比1:1)簡易圖片裁剪教程:https://jingyan.baidu.com/article/cd4c29793d0a39756f6e6077.html
3.只支持png,jpg,jpeg三種格式的圖片
1.建議將詳情內容做成寬度為600的圖片后上傳,每張圖片大小最好控制在1M左右。只支持png,jpg,jpeg三種格式的圖片。如需上傳動圖,請先將圖片擴展名改為.jpg。
(修改方式:http://dwz.cn/7XOHP2)【請注意 一定要上傳圖片!文本形式的產品詳情嚴重影響轉化率,提交審核后會被駁回哦!】
2.詳情頁圖片中要說明商品規格重量、特點、優勢、使用方法、保質期等,從多角度盡量展示商品的全部細節。文字說明建議做成圖片,便于閱讀。
3.如無詳情,可將主圖圖片輔以文字說明制作成詳情圖片,合理排序后上傳。
↑這是個GIF↑
1.首先點擊“創建商品規格”
-規格名稱:可根據產品名稱填寫
-子規格名稱:可根據商品的規格類型填寫,如:顏色、套餐組合、圖案、瓶、盒等
-子規格選項:可填寫商品的具體規格內容,如:商品重量、商品數量、商品尺寸等
【子規格的數量。選項可根據實際情況增加減少】
設置完成后點擊確定
2.選擇已經保存的規格名稱,設置庫存價格商品編碼
商品編碼不展示給用戶,可自行設置
單價可以大于或者小于售價,但是必須有一個套餐價格與售價保持一致
庫存數量可設置較大數值,防止商品賣光庫存不足
正在售賣商品:已經提交審核正在線上售賣商品可以在這里查看
提交申請商品:已提交審核但仍在審核中的商品可以在這里查看
下架商品:已被下架商品可以在這里查看
封禁商品:違規被封禁處理的商品可以在這里查看
保存為提交商品:完成商品創建,點擊了【保存】的商品可以在這里查看,如需給保存商品提交審核 請點擊【修改商品】
回收站:已刪除商品可以在這里查看
商品所需相關資質,請查看:【特殊類目商家資質要求】 對照上傳。
了解禁止投放商品請查看:【頭條小店禁售商品管理規范】
輯導語:在日常生活中,“贈”這種促銷非常常見,一般有:純贈、買贈和滿贈這三種形式。本文作者圍繞業務含義、模型設計和后臺配置,分析了關于贈品的玩法,一起來看一下吧。
上次我整理過一個促銷系統的基礎知識,很感興趣的同學可以參考歷史的文章http://www.woshipm.com/pd/5277720.html,這次來說下常見的促銷類型中的【贈品】促銷。
在我們日常生活中【贈】這種促銷非常常見,從線下實體店到線上電商平臺,都會大量涉及這種玩法。
主要是有這幾種:純贈、買贈和滿贈,其中買贈還分為買一贈N 、買N贈N。
雖然廣義上來說,都是“免費給消費者一個權益/商品”,但是對于系統的實現來說其實是有區別的哦,下面我圍繞業務含義、模型設計和后臺配置來分享一下關于贈品這種玩法。
常規的商品spu:sku=1:n,本質上說,贈品也是一種商品,可以在商品上通過設置一個贈品標簽來控制是否可以為贈品,這樣做可以做一些贈品發放的管控。
整體來說,這種贈品的模式本身是一種類型的促銷。它的交易鏈路和一個常規訂單的流程,比如提單、支付、履約,下發wms等這些流程是沒有區別的,只是不同角色的系統在自身的設計上有一點點不同。
1)業務含義
其實純贈這種模式跟線下實體店里那種試吃、試用是很相似的。包括給潛在用戶一些小樣產品,主要目的來促成轉化,增加銷量。
線上比較常見的比如在線教育機構的試聽課,當你接到了銷售的電話,一番溝通后,突然有一天你會發現你的賬戶里多了一節價值不菲的體驗課,沒過多久,銷售又來聯系你,嘗試讓你購買正價課,如果你成功支付了,那么那節體驗課就完成了它的使命。
有的人也許會有疑問,所有用戶不一定都會被轉化,那前期投入的這些試聽課豈不是很虧,其實對于企業來說,虛擬課程的成本和獲客成本相比,根本不值一提。據報道,在2019年時,在線教育的獲客成本就已經為2000~3000元,2020年時升至3000~4000元,一節虛擬課程的成本遠低于它。
2)系統邊界
一般維護商品和配置活動的是不同的角色,有一些品如果作為贈品發放其實是有風險的。如果在商品這層做了標的限制,下游也需要識別這個標,非贈品的商品一旦下單為贈品訂單,那么下單報錯。如果沒有這樣的風險考慮,其實贈品的建品邏輯和其他商品是一樣的。
1)業務含義
常見的買贈形式包含買一贈一、買一贈N、買N贈N。包括“主商品和贈品一致”以及“主商品和贈品不一致的”情況,前者就贈品和主品一致;后者常見的比如生鮮平臺買菜,買肉會送蒜,今年過年期間買生鮮還送窗花、窗簾,節日氣氛拉滿。
2)系統邊界
1)業務含義
滿贈顧名思義,就是滿多少錢即獲得贈品。贈的維度可以根據訂單金額,比如訂單實付滿99有贈品;也可以根據部分商品金額來制定規則,比如生鮮類商品滿39有贈品。
2)系統邊界
本文由 @閆秀兒 原創發布于人人都是產品經理,未經許可,禁止轉載
題圖來自 Unsplash,基于 CC0 協議
下是爬取京東商品詳情的Python3代碼,以excel存放鏈接的方式批量爬取。excel如下
代碼如下
私信小編01即可獲取大量Python學習資源
from selenium import webdriver
from lxml import etree
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import datetime
import calendar
import logging
from logging import handlers
import requests
import os
import time
import pymssql
import openpyxl
import xlrd
import codecs
class EgongYePing:
options = webdriver.FirefoxOptions()
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","application/zip,application/octet-stream")
global driver
driver= webdriver.Firefox(firefox_profile=fp,options=options)
def Init(self,url,code):
print(url.strip())
driver.get(url.strip())
#driver.refresh()
# 操作瀏覽器屬于異步,在網絡出現問題的時候。可能代碼先執行。但是請求頁面沒有應答。所以硬等
time.sleep(int(3))
html = etree.HTML(driver.page_source)
if driver.title!=None:
listImg=html.xpath('//*[contains(@class,"spec-list")]//ul//li//img')
if len(listImg)==0:
pass
if len(listImg)>0:
imgSrc=''
for item in range(len(listImg)):
imgSrc='https://img14.360buyimg.com/n0/'+listImg[item].attrib["data-url"]
print('頭圖下載:'+imgSrc)
try:
Headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
r = requests.get(imgSrc, headers=Headers, stream=True)
if r.status_code == 200:
imgUrl=''
if item==0:
imgUrl+=code + "_主圖_" + str(item) + '.' + imgSrc.split('//')[1].split('/')[len(imgSrc.split('//')[1].split('/'))-1].split('.')[1]
else:
imgUrl+=code + "_附圖_" + str(item) + '.' + imgSrc.split('//')[1].split('/')[len(imgSrc.split('//')[1].split('/'))-1].split('.')[1]
open(os.getcwd()+'/img/'+ imgUrl , 'wb').write(r.content) # 將內容寫入圖片
del r
except Exception as e:
print("圖片禁止訪問:"+imgSrc)
listImg=html.xpath('//*[contains(@class,"ssd-module")]')
if len(listImg)==0:
listImg=html.xpath('//*[contains(@id,"J-detail-content")]//div//div//p//img')
if len(listImg)==0:
listImg=html.xpath('//*[contains(@id,"J-detail-content")]//img')
if len(listImg)>0:
for index in range(len(listImg)):
detailsHTML=listImg[index].attrib
if 'data-id' in detailsHTML:
try:
details= driver.find_element_by_class_name("animate-"+listImg[index].attrib['data-id']).value_of_css_property('background-image')
details=details.replace('url(' , ' ')
details=details.replace(')' , ' ')
newDetails=details.replace('"', ' ')
details=newDetails.strip()
print("詳情圖下載:"+details)
try:
Headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
r = requests.get(details, headers=Headers, stream=True)
if r.status_code == 200:
imgUrl=''
imgUrl+=code + "_詳情圖_" + str(index) + '.' + details.split('//')[1].split('/')[len(details.split('//')[1].split('/'))-1].split('.')[1]
open(os.getcwd()+'/img/'+ imgUrl, 'wb').write(r.content) # 將內容寫入圖片
del r
except Exception as e:
print("圖片禁止訪問:"+details)
except Exception as e:
print('其他格式的圖片不收錄');
if 'src' in detailsHTML:
try:
details= listImg[index].attrib['src']
if 'http' in details:
pass
else:
details='https:'+details
print("詳情圖下載:"+details)
try:
Headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
r = requests.get(details, headers=Headers, stream=True)
if r.status_code == 200:
imgUrl=''
imgUrl+=code + "_詳情圖_" + str(index) + '.' + details.split('//')[1].split('/')[len(details.split('//')[1].split('/'))-1].split('.')[1]
open(os.getcwd()+'/img/'+ imgUrl, 'wb').write(r.content) # 將內容寫入圖片
del r
except Exception as e:
print("圖片禁止訪問:"+details)
except Exception as e:
print('其他格式的圖片不收錄');
print('結束執行')
@staticmethod
def readxlsx(inputText):
filename=inputText
inwb = openpyxl.load_workbook(filename) # 讀文件
sheetnames = inwb.get_sheet_names() # 獲取讀文件中所有的sheet,通過名字的方式
ws = inwb.get_sheet_by_name(sheetnames[0]) # 獲取第一個sheet內容
# 獲取sheet的最大行數和列數
rows = ws.max_row
cols = ws.max_column
for r in range(1,rows+1):
for c in range(1,cols):
if ws.cell(r,c).value!=None and r!=1 :
if 'item.jd.com' in str(ws.cell(r,c+1).value) and str(ws.cell(r,c+1).value).find('i-item.jd.com')==-1:
print('支持:'+str(ws.cell(r,c).value)+'|'+str(ws.cell(r,c+1).value))
EgongYePing().Init(str(ws.cell(r,c+1).value),str(ws.cell(r,c).value))
else:
print('當前格式不支持:'+(str(ws.cell(r,c).value)+'|'+str(ws.cell(r,c+1).value)))
pass
pass
if __name__ == "__main__":
start = EgongYePing()
start.readxlsx(r'C:\Users\newYear\Desktop\爬圖.xlsx')
基本上除了過期的商品無法訪問以外。對于京東的三種頁面結構都做了處理。能訪問到的商品頁面。還做了模擬瀏覽器請求訪問和下載。基本不會被反爬蟲屏蔽下載。
上面這一段是以火狐模擬器運行
上面這一段是模擬瀏覽器下載。如果不加上這一段。經常會下載幾十張圖片后,很長一段時間無法正常下載圖片。因為沒有請求頭被認為是爬蟲。
上面這段是京東的商品詳情頁面,經常會三種?(可能以后會更多的頁面結構)
所以做了三段解析。只要沒有抓到圖片就換一種解析方式。這楊就全了。
京東的圖片基本只存/1.jpg。然后域名是 https://img14.360buyimg.com/n0/。所以目前要拼一下。
京東還有個很蛋疼的地方是圖片以data-id拼進div的背景元素里。所以取出來的時候要繞一下。還好也解決了。
以下是爬取京東商品詳情的Python3代碼,以excel存放鏈接的方式批量爬取。excel如下
因為這次是淘寶和京東一起爬取。所以在一個excel里。代碼里區分淘寶和京東的鏈接。以下是代碼
from selenium import webdriver
from lxml import etree
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import datetime
import calendar
import logging
from logging import handlers
import requests
import os
import time
import pymssql
import openpyxl
import xlrd
import codecs
class EgongYePing:
options = webdriver.FirefoxOptions()
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","application/zip,application/octet-stream")
global driver
driver= webdriver.Firefox(firefox_profile=fp,options=options)
def Init(self,url,code):
#driver = webdriver.Chrome('D:\python3\Scripts\chromedriver.exe')
#driver.get(url)
print(url.strip())
driver.get(url.strip())
#driver.refresh()
# 操作瀏覽器屬于異步,在網絡出現問題的時候。可能代碼先執行。但是請求頁面沒有應答。所以硬等
time.sleep(int(3))
html = etree.HTML(driver.page_source)
if driver.title!=None:
listImg=html.xpath('//*[contains(@id,"J_UlThumb")]//img')
if len(listImg)==0:
pass
if len(listImg)>0:
imgSrc=''
for item in range(len(listImg)):
search=listImg[item].attrib
if 'data-src' in search:
imgSrc=listImg[item].attrib["data-src"].replace('.jpg_50x50','')
else:
imgSrc=listImg[item].attrib["src"]
if 'http' in imgSrc:
pass
else:
imgSrc='https:'+imgSrc
print('頭圖下載:'+imgSrc)
try:
Headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
r = requests.get(imgSrc, headers=Headers, stream=True)
if r.status_code == 200:
imgUrl=''
if item==0:
imgUrl+=code + "_主圖_" + str(item) + '.' + imgSrc.split('//')[1].split('/')[len(imgSrc.split('//')[1].split('/'))-1].split('.')[1]
else:
imgUrl+=code + "_附圖_" + str(item) + '.' + imgSrc.split('//')[1].split('/')[len(imgSrc.split('//')[1].split('/'))-1].split('.')[1]
open(os.getcwd()+'/img/'+ imgUrl , 'wb').write(r.content) # 將內容寫入圖片
del r
except Exception as e:
print("圖片禁止訪問:"+imgSrc)
listImg=html.xpath('//*[contains(@id,"J_DivItemDesc")]//img')
if len(listImg)>0:
for index in range(len(listImg)):
detailsHTML=listImg[index].attrib
if 'data-ks-lazyload' in detailsHTML:
details= listImg[index].attrib["data-ks-lazyload"]
print("詳情圖下載:"+details)
else:
details= listImg[index].attrib["src"]
print("詳情圖下載:"+details)
try:
Headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
r = requests.get(details, headers=Headers, stream=True)
if r.status_code == 200:
imgUrl=''
details=details.split('?')[0]
imgUrl+=code + "_詳情圖_" + str(index) + '.' + details.split('//')[1].split('/')[len(details.split('//')[1].split('/'))-1].split('.')[1]
open(os.getcwd()+'/img/'+ imgUrl, 'wb').write(r.content) # 將內容寫入圖片
del r
except Exception as e:
print("圖片禁止訪問:"+details)
print('結束執行')
@staticmethod
def readxlsx(inputText):
filename=inputText
inwb = openpyxl.load_workbook(filename) # 讀文件
sheetnames = inwb.get_sheet_names() # 獲取讀文件中所有的sheet,通過名字的方式
ws = inwb.get_sheet_by_name(sheetnames[0]) # 獲取第一個sheet內容
# 獲取sheet的最大行數和列數
rows = ws.max_row
cols = ws.max_column
for r in range(1,rows+1):
for c in range(1,cols):
if ws.cell(r,c).value!=None and r!=1 :
if 'item.taobao.com' in str(ws.cell(r,c+1).value):
print('支持:'+str(ws.cell(r,c).value)+'|'+str(ws.cell(r,c+1).value))
EgongYePing().Init(str(ws.cell(r,c+1).value),str(ws.cell(r,c).value))
else:
print('當前格式不支持:'+(str(ws.cell(r,c).value)+'|'+str(ws.cell(r,c+1).value)))
pass
pass
if __name__ == "__main__":
start = EgongYePing()
start.readxlsx(r'C:\Users\newYear\Desktop\爬圖.xlsx')
淘寶有兩個問題,一個是需要綁定賬號登錄訪問。這里是代碼斷點。然后手動走過授權。
第二個是被休息和懶惰加載。被休息。其實沒影響的。一個頁面結構已經加載出來了。然后也不會影響訪問其他的頁面。
至于懶惰加載嘛。對我們也沒啥影響。如果不是直接寫在src里那就在判斷一次取 data-ks-lazyload就出來了。
最后就是爬取的片段截圖
建議還是直接將爬取的數據存服務器,數據庫,或者圖片服務器。因為程序挺靠譜的。一萬條數據。爬了26個G的文件。最后上傳的時候差點累死了
是真的大。最后還要拆包。十幾個2g壓縮包一個一個上傳。才成功。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。