You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium网页爬取:选择下拉菜单后获取当前URL

解决亚马逊爬虫选尺寸后无法获取更新URL的问题

嘿,我懂你碰到的麻烦了——用Selenium选中亚马逊服装的尺寸后,调用driver.current_url居然还是返回原始的URL,完全拿不到切换尺寸后的目标链接对吧?

问题根源

亚马逊的尺寸选择下拉框是通过AJAX异步更新页面内容的,它不会直接刷新整个页面或者修改地址栏的URL,只是动态替换页面里的商品信息(比如对应的ASIN编码)。所以你刚选完尺寸就去拿current_url,得到的肯定还是原来的地址。

解决方案

我们可以通过两种简单的方式获取到更新后的正确URL:

方法1:读取页面的canonical标签

亚马逊页面里的<link rel="canonical">标签会实时更新为当前选中尺寸的商品标准URL,我们只需要等待这个标签更新后,读取它的href属性就行。

修改后的代码示例:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

url='https://www.amazon.ae/Jack-Jones-Glenn-Original-Pants/dp/B07JQB87KL/ref=sr_1_5?crid=M8QQKGLLZ1O9&keywords=jeans&qid=1657289288&sprefix=jeans%2Caps%2C232&sr=8-5&th=1'
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get(url)

# 选中目标尺寸
select = Select(driver.find_element(By.ID, "native_dropdown_selected_size_name"))
select.select_by_index(2)

# 等待页面更新:等原来的canonical标签失效(说明页面已刷新)
wait = WebDriverWait(driver, 10)
wait.until(EC.staleness_of(driver.find_element(By.CSS_SELECTOR, 'link[rel="canonical"]')))

# 获取更新后的正确URL
updated_url = driver.find_element(By.CSS_SELECTOR, 'link[rel="canonical"]').get_attribute('href')
print(updated_url)

方法2:直接获取新的ASIN并拼接URL

如果canonical标签不好用,你还可以找到页面中显示当前商品ASIN的元素,拿到新的ASIN后,和亚马逊的商品URL格式拼接:

  • 亚马逊商品基础URL格式:https://www.amazon.ae/dp/[新ASIN]
  • 再加上原始URL里的查询参数(比如ref=sr_1_5这类)

举个例子,你可以通过driver.find_element(By.ID, 'ASIN').get_attribute('value')获取新的ASIN,然后拼接成完整URL。

额外提示

选完尺寸后一定要加等待时间,让页面完成异步更新,不然可能拿到的还是旧数据。上面代码里用了WebDriverWait来等待元素失效,比固定time.sleep()更靠谱。

内容的提问来源于stack exchange,提问作者Minda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 20:17:52