modified: amazon/chrome_base.py
modified: amazon/detail_spider.py modified: amazon/match_action.py modified: amazon/similar_asin.py deleted: amazon/user_data/chrome_data/BrowserMetrics-spare.pma deleted: amazon/user_data/chrome_data/BrowserMetrics/BrowserMetrics-69FAEF07-558.pma deleted: amazon/user_data/chrome_data/Crashpad/metadata deleted: amazon/user_data/chrome_data/Crashpad/settings.dat
This commit is contained in:
@@ -30,7 +30,7 @@ class AmzoneMatchAction(AmamzonBase):
|
||||
except Exception as e:
|
||||
print(f"【{self.mark_name}】等待加载中消失出错", e)
|
||||
|
||||
def run_page_action(self):
|
||||
def run_page_action(self,skip_asin=[]):
|
||||
self.log(f"==================={self.mark_name}=======================")
|
||||
self.log("开始执行...")
|
||||
num = 0
|
||||
@@ -86,7 +86,13 @@ class AmzoneMatchAction(AmamzonBase):
|
||||
# solve_problem = sku_ele.eles('xpath:.//kat-link[@label="解决商品信息问题"]')
|
||||
|
||||
asin = sku_ele.ele('xpath:.//div[contains(@class,"JanusSplitBox-module__container")]//div[contains(@class,"JanusSplitBox-module__panel--") and contains(string(.),"ASIN")]/..//div[last()]',timeout=3).text
|
||||
self.log(f"【{self.mark_name}】ASIN {asin} 找到....")
|
||||
self.log(f"ASIN {asin} 找到....")
|
||||
if asin in skip_asin:
|
||||
self.log(f"ASIN {asin} 跳过....")
|
||||
yield (asin,"有最低价跳过")
|
||||
self.already_asin.add(asin)
|
||||
continue
|
||||
|
||||
if asin in self.already_asin:
|
||||
self.log(f"【{self.mark_name}】{asin} 已经处理过了,跳过")
|
||||
continue
|
||||
@@ -228,6 +234,9 @@ class MatchTak(TaskBase):
|
||||
shop_name = shop_item.get("shopName", "未知店铺")
|
||||
company_name = shop_item.get("companyName", "")
|
||||
|
||||
skip_asins_by_country = shop_item.get("skipAsinsByCountry",{})
|
||||
skipAsinDetailsByCountry = shop_item.get("skipAsinDetailsByCountry",{})
|
||||
|
||||
if not company_name:
|
||||
self.log(f"店铺 {shop_name} 的公司名称为空,跳过", "WARNING")
|
||||
return
|
||||
@@ -252,6 +261,11 @@ class MatchTak(TaskBase):
|
||||
self.log(f"检测到任务 {task_id} 的暂停请求,停止处理国家", "WARNING")
|
||||
break
|
||||
|
||||
skip_asin = skip_asins_by_country.get(country_code)
|
||||
if skipAsinDetailsByCountry :
|
||||
skipAsinDetails = {i.get("asin"):i.get("minimumPrice") for i in skipAsinDetailsByCountry.get(country_code)}
|
||||
else:
|
||||
skipAsinDetails = {}
|
||||
# 打开店铺
|
||||
driver = self.open_shop(cls=AmzoneMatchAction,max_retries=max_retries, company_name=company_name,
|
||||
shop_name=shop_name, iskill=iskill)
|
||||
@@ -265,7 +279,7 @@ class MatchTak(TaskBase):
|
||||
for _ in range(max_retries):
|
||||
try:
|
||||
self.process_country(driver, country_code, task_id, shop_name,risk_listing_filter,limit,
|
||||
target_url=current_url)
|
||||
target_url=current_url,skip_asin=skip_asin,skipAsinDetails=skipAsinDetails)
|
||||
driver.reset_already_asin()
|
||||
driver.close_store()
|
||||
break
|
||||
@@ -297,7 +311,8 @@ class MatchTak(TaskBase):
|
||||
del runing_shop[shop_name]
|
||||
self.log(f"店铺 {shop_name} 已从执行列表中移除")
|
||||
|
||||
def process_country(self, driver, country_code, task_id, shop_name, risk_listing_filter,limit=None,target_url=None):
|
||||
def process_country(self, driver, country_code, task_id, shop_name, risk_listing_filter,limit=None,target_url=None,
|
||||
skip_asin=[],skipAsinDetails={}):
|
||||
"""处理单个国家的审批任务
|
||||
"""
|
||||
|
||||
@@ -339,7 +354,7 @@ class MatchTak(TaskBase):
|
||||
|
||||
result = []
|
||||
# 处理所有需要审批的商品(通过yield获取结果)
|
||||
for asin, status in driver.run_page_action():
|
||||
for asin, status in driver.run_page_action(skip_asin):
|
||||
# 检查是否收到暂停请求
|
||||
if task_id in runing_task and runing_task[task_id].get("stop_requested", False):
|
||||
self.log(f"检测到任务 {task_id} 的暂停请求,停止处理ASIN", "WARNING")
|
||||
@@ -353,10 +368,13 @@ class MatchTak(TaskBase):
|
||||
runing_task[task_id]["processed_asins"] += 1
|
||||
|
||||
runing_task[task_id]["failed_count"] += 1
|
||||
|
||||
minimumPrice = ""
|
||||
if "有最低价跳过" in status:
|
||||
minimumPrice = skipAsinDetails.get(asin)
|
||||
result.append({
|
||||
"asin": asin,
|
||||
"status": status,
|
||||
"minimumPrice": minimumPrice,
|
||||
"done": False
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user