Python爬取亚马逊多ASIN商品仅返回最后一个标题问题咨询
多ASIN亚马逊商品标题爬取修复方案
问题根因
你的代码将页面请求、标题解析逻辑全部放在了ASIN遍历循环之外,循环内部仅完成了url变量的重复赋值,循环结束后url仅保留最后一个ASIN对应的地址,因此仅能拿到最后一个商品的标题。
修正后可运行代码
from bs4 import BeautifulSoup from selenium import webdriver import time # 初始化浏览器驱动,可根据你使用的浏览器调整为Firefox、Edge等 driver = webdriver.Chrome() ASIN = ['B09C1Q9P1N','B096W87PPJ'] title_result = [] for a in ASIN: url = 'https://www.amazon.de/dp/' + a + '/' # 每个ASIN对应页面单独发起请求 driver.get(url) # 增加延时避免反爬,可根据实际情况调整时长 time.sleep(3) # 每个页面单独解析提取标题 soupa = BeautifulSoup(driver.page_source, 'html.parser') title = soupa.find(id='productTitle').text.replace('\n', '').replace(' ', '').strip() # 实时打印当前ASIN对应标题 print(f"ASIN {a} 商品标题:{title}") title_result.append((a, title)) # 爬取完成后关闭浏览器 driver.quit() # 批量输出所有结果 print("\n全部ASIN对应标题汇总:") for asin, title in title_result: print(f"{asin}:{title}")
注意事项
- 亚马逊反爬机制严格,若出现元素定位失败的情况,可将固定延时替换为selenium显式等待,等待
productTitle元素加载完成后再解析 - 若频繁触发验证码,可搭配代理IP、UA池降低封禁风险
- 需保证selenium驱动版本和本地浏览器版本匹配,否则会出现启动报错
内容的提问来源于stack exchange,提问作者Onba
相关产品推荐
相关产品推荐

