2016-09-23 89 views
-2

我想使用Selenium(在Python中)將項目添加到我的亞馬遜購物車。具體從一個頁面如: https://www.amazon.com/gp/offer-listing/B01GHQ02DK/ie=UTF8&condition=all **將此鏈接複製到您的瀏覽器,不要直接點擊。使用Selenium python添加到購物車亞馬遜

正如你所看到的,有幾種選擇可以添加到您的購物車。看看源代碼,我無法確定如何「點擊按鈕」,這會將我想要的選擇添加到購物車中(例如,假設我希望列表中的第二個)。任何幫助將不勝感激,謝謝。

編輯:添加了我想要完成的示例代碼。需要幫助填補空白。

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() 
+1

你可以發佈你到目前爲止嘗試過的代碼嗎? – orde

+0

尋求調試幫助的問題(**「爲什麼這個代碼不工作?」**)必須包含所需的行爲,*特定的問題或錯誤*和*在問題本身中重現它所需的最短代碼* **。沒有**明確問題陳述**的問題對其他讀者沒有用處。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – MattDMo

+0

說實話我不知道從哪裏開始。我的意思是我可以發佈啓動一個selenium webdriver實例的代碼,並轉到上述網站。我的問題陳述很清楚。我想使用硒將這些物品中的一種添加到我的購物車中。你是否說沒有人能夠幫助我,除非我有自己的想法? (因爲我沒有) – cracka31

回答

2

有許多方法可以確定您想要點擊的按鈕。一個簡單的方法是獲取它的xpath。 Chrome有一個方便的方法來做到這一點。右鍵點擊按鈕並選擇'檢查元素'。一個新框架將打開,並且該按鈕的HTML代碼將被突出顯示。右鍵單擊此高亮顯示的行,然後選擇複製並滑過以選擇「複製XPath」。然後,您可以使用find_element_by_xpath('xpath')。click()將您從檢查元素中複製的內容替換爲'xpath'。見代碼示例:

from selenium import webdriver 
from time import sleep 

url = "http://rads.stackoverflow.com/amzn/click/B01GHQ02DK" 

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

sleep(3) 

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

我猜你在找什麼在某些頁面並不總是最終被第二項。當你檢查html時,你會發現每一行都有一些獨特的信息,你可以很容易地遍歷所有適當的元素來選擇適合你的元素,例如:最佳價格,最高收視率等。W3Schools在XPath上有非常好的教程。

此外,使用睡眠不是等待頁面加載的最佳方式。在這個例子中,我用它來表達權宜之計。

+0

謝謝!這非常有幫助。你知道是否有辦法在html源代碼中找到xpath?例如,搜索「autoid-1」沒有任何結果。 – cracka31

+0

是的,如果您使用Chrome檢查元素如上所述。似乎有幾個Firefox附加組件可以做同樣的事情。 – Dkellygb

+0

用上面描述的方法,我需要物理上右鍵單擊按鈕。我在問......有沒有一種方法可以將源代碼中的某行聯繫起來,以便爲我提供xpath。這樣,如果我知道在源代碼中找到按鈕的位置,那麼我知道xpath(所以我不必物理地右鍵單擊並檢查元素)。對不起,如果我不夠清楚。 – cracka31

0

使用硒,你只需要找到該按鈕的唯一選擇(在這種情況下,僅僅是ID),使用方法find_element_by_id最後點擊()來模擬點擊:

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

你可以做到這一點點擊第一個「被新的」選項:

from selenium import webdriver 

url="http://rads.stackoverflow.com/amzn/click/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="http://rads.stackoverflow.com/amzn/click/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()