我正在尝试获取产品图像的所有链接 - https://www.amazon.co.uk/Autoglym-AG-035001-Interior-Shampoo/dp/B00114WOBC/ref=sr_1_1?ie=UTF8&qid=1553519250&sr=8-1&keywords=715933155337
但作为回报,我只得到图像的一个URL链接。
当我试图找到列表的长度时,我甚至没有获得6个元素(product_image_url2)
product_image_url2 = self.browser.find_elements_by_xpath('//*[@id="main-image-
container"]/ul/li/span/span/div/img')
product_image_url2_count = len(product_image_url2)
print product_image_url2_count
image_url2 = []
for curr_product_image_url2 in product_image_url2:
image_url2.append(curr_product_image_url2.get_attribute("src"))
product_dict['image url2']=image_url2
这是获取左侧img元素的正确xpath。
//li[@class='a-spacing-small item imageThumbnail a-declarative']//img
下面的代码和输出:
wait.until(EC.presence_of_element_located((By.XPATH, "//li[@class='a-spacing-small item imageThumbnail a-declarative']//img")))
product_image_url2 = driver.find_elements_by_xpath("//li[@class='a-spacing-small item imageThumbnail a-declarative']//img")
product_image_url2_count = len(product_image_url2)
print(product_image_url2_count)
image_url2 = []
for curr_product_image_url2 in product_image_url2:
print(curr_product_image_url2.get_attribute("src"))
image_url2.append(curr_product_image_url2.get_attribute("src"))
输出:6 https://images-na.ssl-images-amazon.com/images/I/31JLKXyjA5L.SS40.jpg https://images-na.ssl-images-amazon.com/images/I/51ZZMf1JVfL.SS40.jpg https://images-na.ssl-images-amazon.com/images/I/416%2BBQU%2BtuL.SS40.jpg https://images-na.ssl-images-amazon.com/images/I/41CdeeG0HGL.SS40.jpg https://images-na.ssl-images-amazon.com/images/I/41bZb0qgNPL.SS40.jpg https://images-na.ssl-images-amazon.com/images/I/219h80ACoQL.SS40.jpg
你的xpath是错误的。试试下面的xpath。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.amazon.co.uk/Autoglym-AG-035001-Interior-Shampoo/dp/B00114WOBC/ref=sr_1_1?ie=UTF8&qid=1553519250&sr=8-1&keywords=715933155337')
product_image_url2 = driver.find_elements_by_xpath('//span[@id="a-autoid-8-announce"]/img')
product_image_url2_count = len(product_image_url2)
print (product_image_url2_count)
image_url2 = []
for curr_product_image_url2 in product_image_url2:
image_url2.append(curr_product_image_url2.get_attribute("src"))
print(image_url2)
如果你想在字典中存储尝试下面的代码。
product_dict={}
for i in range(len(image_url2)):
product_dict[i]=image_url2[i]
print(product_dict)
输出:
6
['https://images-na.ssl-images-amazon.com/images/I/31JLKXyjA5L._SS40_.jpg', 'https://images-na.ssl-images-amazon.com/images/I/51ZZMf1JVfL._SS40_.jpg', 'https://images-na.ssl-images-amazon.com/images/I/416%2BBQU%2BtuL._SS40_.jpg', 'https://images-na.ssl-images-amazon.com/images/I/41CdeeG0HGL._SS40_.jpg', 'https://images-na.ssl-images-amazon.com/images/I/41bZb0qgNPL._SS40_.jpg', 'https://images-na.ssl-images-amazon.com/images/I/219h80ACoQL._SS40_.jpg']
{0: 'https://images-na.ssl-images-amazon.com/images/I/31JLKXyjA5L._SS40_.jpg', 1: 'https://images-na.ssl-images-amazon.com/images/I/51ZZMf1JVfL._SS40_.jpg', 2: 'https://images-na.ssl-images-amazon.com/images/I/416%2BBQU%2BtuL._SS40_.jpg', 3: 'https://images-na.ssl-images-amazon.com/images/I/41CdeeG0HGL._SS40_.jpg', 4: 'https://images-na.ssl-images-amazon.com/images/I/41bZb0qgNPL._SS40_.jpg', 5: 'https://images-na.ssl-images-amazon.com/images/I/219h80ACoQL._SS40_.jpg'}
匹配那些的css替代方案
#altImages img:not([alt])
#
是一个id选择器。 img
是一个类型选择器(用于标记)。两者之间的space
是descendant combinator
意思是img
是一个id为altImages
的元素的孩子。 :not([alt])
指定孩子img
没有alt
属性。 []
是属性选择器,:not
是CSS pseudo-class
。了解他们here。
码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = 'https://www.amazon.co.uk/Autoglym-AG-035001-Interior-Shampoo/dp/B00114WOBC/ref=sr_1_1?ie=UTF8&qid=1553519250&sr=8-1&keywords=715933155337'
driver = webdriver.Chrome()
driver.get(url)
srcs = [item.get_attribute("src") for item in WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "#altImages img:not([alt])")))]
print(srcs)