【问题标题】:Adding to Cart in Amazon using Selenium python [closed]使用 Selenium python 添加到亚马逊的购物车 [关闭]
【发布时间】:2016-09-23 22:48:09
【问题描述】:

我想使用 Selenium(在 python 中)将商品添加到我的亚马逊购物车。具体来自一个页面,例如: https://www.amazon.com/gp/offer-listing/B01GHQ02DK/ie=UTF8&condition=all **将此链接复制到浏览器中,请勿直接点击。

如您所见,有多个选项可供选择以添加到您的购物车。查看源代码,我不知道如何“单击按钮”将我想要的选择添加到购物车(例如,假设我想要列表中的第二个)。任何帮助将不胜感激,谢谢。

编辑:添加了我想要完成的示例代码。需要帮助填空。

from selenium import webdriver

url = "https://....**website posted above**"
driver = webdriver.Firefox()
driver.get(url)  

def add2ndItemToCart():
    # Don't know what to put here

add2ndItemToCart()

【问题讨论】:

  • 你能贴出你目前尝试过的代码吗?
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误在问题本身中重现它所需的最短代码。没有明确的问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable Example
  • 说实话我不知道从哪里开始。我的意思是我可以发布启动 selenium webdriver 实例的代码,然后访问上述网站。我的问题陈述很清楚。我想使用 selenium 将其中一项添加到我的购物车中。你是说除非我自己知道如何做,否则没有人可以帮助我? (因为我没有)
  • 关键是网络上有大量关于如何做这样的事情的教程。你需要证明你在研究中付出了一些努力,并试图回答你自己的问题。写 4 行代码并不是什么尝试。
  • 嗨。是的,虽然有很多教程如何使用 selenium 并执行类似的操作(例如单击按钮等),但我在这些特定操作上找不到任何内容。如果有人只是看一下网站的源代码,你会发现它不仅仅是一个简单的按钮点击。

标签: python selenium automation amazon


【解决方案1】:

有多种方法可以识别您要单击的按钮。一种简单的方法是获取它的 xpath。 Chrome 有一个方便的方法来做到这一点。右键单击按钮并选择“检查元素”。将打开一个新框架,并突出显示按钮的 HTML 代码。右键单击此突出显示的行,然后选择复制并滑过以选择“复制 XPath”。然后您可以使用 find_element_by_xpath('xpath').click() 将 'xpath' 替换为您从检查元素复制的内容。见代码示例:

from selenium import webdriver
from time import sleep

url = "https://www.amazon.com/gp/offer-listing/B01GHQ02DK/ie=UTF8&condition=all"

driver = webdriver.Chrome()
driver.get(url)

sleep(3)

driver.find_element_by_xpath('//*[@id="a-autoid-1"]/span/input').click()

我猜您在某些页面上查找的内容并不总是最终成为第二项。当您检查 html 时,您会看到每一行都有一些独特的信息,并且您可以轻松地遍历所有适当的元素以选择适合您的元素,例如;最优惠的价格、最高的评分等。W3Schools 有一个非常好的 XPath 教程。

另外,使用睡眠并不是等待页面加载的最佳方式。我在这个例子中使用它是为了方便。

【讨论】:

  • 谢谢!这很有帮助。你知道是否有办法在 html 源代码中找到 xpath 吗?例如,搜索“autoid-1”一无所获。
  • 是的,如果您如上所述使用 Chrome 检查元素。似乎有几个 Firefox 的附加组件似乎做同样的事情。
  • 使用上述方法,我需要物理上右键单击按钮。我在问...有没有一种方法可以将源代码中的某些行关联起来给我 xpath。这样,如果我知道在源代码中的哪里可以找到按钮,那么我就知道 xpath(所以我不必物理上右键单击并检查元素)。对不起,如果我不够清楚。
  • 是的,如果您从 W3Schools 学习教程,您会发现 XPath 非常合乎逻辑。每个按钮都有一个唯一的 ID,例如:a-autoid-0、a-autoid-1、a-autoid-2 等。使用 Selenium,您可以遍历表中的所有行以确定哪个是正确的项目并单击它。很抱歉,如果不了解您的目标,我无法向您提供更多信息。
【解决方案2】:

您可以这样做以点击第一个“BY New”选项:

from selenium import webdriver

url="https://www.amazon.com/dp/B01GHQ02DK/"
driver=webdriver.Firefox()
driver.maximize_window()
driver.get(url)
driver.implicitly_wait(5)
driver.find_element_by_name('submit.add-to-cart').click()

对于“按使用”,您必须先单击单选按钮,然后单击添加到购物车按钮,示例代码如下:

from selenium import webdriver

url="https://www.amazon.com/dp/B01GHQ02DK/"
driver=webdriver.Firefox()
driver.maximize_window()
driver.get(url)
driver.implicitly_wait(5)
driver.find_element_by_xpath(".//*[@id='usedBuySection']/i").click()
driver.find_element_by_name('submit.add-to-cart-ubb').click()

【讨论】:

    【解决方案3】:

    使用 selenium 你只需要为按钮找到一个唯一的选择器(在这种情况下只是 id),使用方法 find_element_by_id 并最后 click() 来模拟点击:

    driver.find_element_by_id('add-to-cart-button').click()
    

    【讨论】:

      猜你喜欢
      • 2012-08-27
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多