重定向到购物车页面后的亚马逊网络抓取(隐藏元素)(python,selenium)
Amazon web scraping (hidden element) after redirect to cart page (python, selenium)
当我将购物车中的商品更新为999时,如何从购物车中获取隐藏信息(itrack方法)。 span 的 class 是 a-size-base。我使用 python 和 selenium(我附上了程序)
所以我的程序将打开一个产品页面 link,点击添加到购物车,重定向到购物车页面,现在我想提取 class a-size-base 范围内的信息。如果您将购物车中的商品更新为 999 并单击输入,您可以看到该跨度标签。它将出现一个警报跨度。我想提取该信息。
我将不胜感激任何帮助。
from selenium import webdriver
from time import sleep
url = "https://www.amazon.com/gp/product/B0118QC1BA/ref=s9_acsd_cdeal_hd_bw_bFmNr_c_x_w?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=merchandised-search-5&pf_rd_r=AZJF41VDFJMPA4XY6D95&pf_rd_t=101&pf_rd_p=32a36b64-58af-5269-b81a-c1030ee0250c&pf_rd_i=3760911"
driver = webdriver.Chrome(executable_path="C:\Users\Andrei\Downloads\chromedriver_win32\chromedriver.exe")
driver.get(url)
sleep(3)
driver.find_element_by_xpath('//*[@id="submit.add-to-cart"]/span/input').click()
sleep(3)
#driver.find_element_by_xpath('//*[@id="smartShelfAddToCartContinue"]/span/input')
driver.execute_script("document.getElementById('smartShelfAddToCartNative').click()")
sleep(3)
items_cart = driver.find_element_by_xpath('//div[@class="a-alert-content"]/span')
print driver.execute_script("return arguments[0].innerHTML",items_cart)
这是我更改购物车中商品数量的方法
# update the quantity
from selenium.webdriver.common.keys import Keys
driver.find_element_by_xpath('//*[@id="a-autoid-0-announce"]/span[2]').click()
driver.find_element_by_xpath('//*[@id="dropdown1_9"]').click()
quantity_xpath = '//*[@id="activeCartViewForm"]/div[2]/div/div[4]/div/div[3]/div/div/input'
quantity_el = driver.find_element_by_xpath(quantity_xpath)
quantity_el.send_keys("999" + Keys.ENTER)
现在数量已更新,应该会出现警告消息。似乎在使用 xpath 时 item_cart 您正在选择传递状态警报,因此您必须缩小 xpath 字符串的范围以使其更具体。
items_cart = driver.find_element_by_xpath('//*[@class="sc-list-item-content"]//*[@class="a-alert-content"]/span')
print items_cart.text
当我将购物车中的商品更新为999时,如何从购物车中获取隐藏信息(itrack方法)。 span 的 class 是 a-size-base。我使用 python 和 selenium(我附上了程序) 所以我的程序将打开一个产品页面 link,点击添加到购物车,重定向到购物车页面,现在我想提取 class a-size-base 范围内的信息。如果您将购物车中的商品更新为 999 并单击输入,您可以看到该跨度标签。它将出现一个警报跨度。我想提取该信息。 我将不胜感激任何帮助。
from selenium import webdriver
from time import sleep
url = "https://www.amazon.com/gp/product/B0118QC1BA/ref=s9_acsd_cdeal_hd_bw_bFmNr_c_x_w?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=merchandised-search-5&pf_rd_r=AZJF41VDFJMPA4XY6D95&pf_rd_t=101&pf_rd_p=32a36b64-58af-5269-b81a-c1030ee0250c&pf_rd_i=3760911"
driver = webdriver.Chrome(executable_path="C:\Users\Andrei\Downloads\chromedriver_win32\chromedriver.exe")
driver.get(url)
sleep(3)
driver.find_element_by_xpath('//*[@id="submit.add-to-cart"]/span/input').click()
sleep(3)
#driver.find_element_by_xpath('//*[@id="smartShelfAddToCartContinue"]/span/input')
driver.execute_script("document.getElementById('smartShelfAddToCartNative').click()")
sleep(3)
items_cart = driver.find_element_by_xpath('//div[@class="a-alert-content"]/span')
print driver.execute_script("return arguments[0].innerHTML",items_cart)
这是我更改购物车中商品数量的方法
# update the quantity
from selenium.webdriver.common.keys import Keys
driver.find_element_by_xpath('//*[@id="a-autoid-0-announce"]/span[2]').click()
driver.find_element_by_xpath('//*[@id="dropdown1_9"]').click()
quantity_xpath = '//*[@id="activeCartViewForm"]/div[2]/div/div[4]/div/div[3]/div/div/input'
quantity_el = driver.find_element_by_xpath(quantity_xpath)
quantity_el.send_keys("999" + Keys.ENTER)
现在数量已更新,应该会出现警告消息。似乎在使用 xpath 时 item_cart 您正在选择传递状态警报,因此您必须缩小 xpath 字符串的范围以使其更具体。
items_cart = driver.find_element_by_xpath('//*[@class="sc-list-item-content"]//*[@class="a-alert-content"]/span')
print items_cart.text