2016-12-24 41 views
1

你好我所有的任務是從報價鏈接like this one報廢源URL。Python硒刮失URL的圖像

但是,當我試圖讓元素像這樣(請注意,我做2所請求的URL來獲取餅乾,因爲第一次被重定向我的主網頁):

driver = webdriver.Firefox(executable_path="C:\\selenium-drivers\\geckodriver.exe") 
driver.get("http://www.kmart.com/joe-boxer-men-s-pajama-shirt-pants-plaid/p-046VA92629712P") 
driver.get("http://www.kmart.com/joe-boxer-men-s-pajama-shirt-pants-plaid/p-046VA92629712P") 
img_element = driver.find_elements_by_class_name("main-image") 

無元素被發現,當我嘗試在瀏覽器的源代碼中使用Ctrl + U搜索它們時,它們丟失了。這是爲什麼發生?有誰可以告訴我如何獲得這些圖像。

回答

2

你只需要告訴硒要有耐心,wait for element's visibility

from selenium.webdriver.support.ui import WebDriverWait 
from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support import expected_conditions as EC 

# driver definition here 

driver.get("http://www.kmart.com/joe-boxer-men-s-pajama-shirt-pants-plaid/p-046VA92629712P") 

wait = WebDriverWait(driver, 10) 

# get the main image element 
img_element = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'main-image'))) 
print(img_element.get_attribute("alt")) 

driver.close() 

對於演示的目的,它打印alt屬性的圖像,這就是:

Joe Boxer Men's Pajama Shirt & Pants - Plaid 
+0

哦,我的上帝,你是米你是救世主!謝謝,我不知道有等待元素的功能。聖誕節快樂! – Psyke

0

或者你可以只需找到xpath然後得到圖像url

>>> driver.get('http://www.kmart.com/joe-boxer-men-s-pajama-shirt-pants-plaid/p-046VA92629712P') 
>>> s = driver.find_element_by_xpath('//*[@id="overview"]/div[1]/img') 
>>> s.get_attribute('src') 
'http://c.shld.net/rpx/i/s/i/spin/-122/prod_2253990712?hei=624&wid=624&op_sharpen=1' 
+0

這個作品太謝謝你了! Mery聖誕節 – Psyke