python - 如果存在子字符串,如何从列表中获取字符串

标签 python selenium

我试图在点击时获取产品图像,因为它们的分辨率更高。到目前为止,我有这样的代码:

start = soup(d.page_source, 'html.parser') # d is the driver
while start.find('div', {'class': 'gallery-images'}) is None:
            start = soup(d.page_source, 'html.parser')

        product_images = [i.find('img', {'alt': 'Mirror Embellished Scuba Skirt'}).src for i in
                    start.find_all('div', {'class': 'gallery-images'})]

但是,它说 nonetype 没有对象 src。 start.find_all 返回其中级联的所有元素的列表。

编辑:网页: https://www.michaelkors.com/mirror-embellished-scuba-skirt/_/R-US_MU97EYCBGL

编辑2: 我有硬编码的 alt 值。页面 scrapy 调用没有具有此特定值的 alt。但是当我删除 alt 时它也不会返回任何内容

最佳答案

这是代码。它返回我的 src 值。

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
from bs4 import BeautifulSoup

driver = webdriver.Chrome()
driver.get("https://www.michaelkors.co.uk/")
search_ele=WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.search-link[title="Search"]')))
search_ele.click()
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'input#search-box'))).send_keys('mirror-embellished-scuba-skirt')
element=WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'button.search-icon-btn')))
driver.execute_script("arguments[0].click();", element)
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'a[title="Mirror Embellished Scuba Skirt"]'))).click()
time.sleep(3)
soup=BeautifulSoup(driver.page_source,'html.parser')
product_images=[]
for i in soup.find_all('div', class_='gallery-images'):
    for img in i.select('img[alt="Mirror Embellished Scuba Skirt"]'):
        product_images.append(img['src'])

print(product_images)

输出:

['//michaelkors.scene7.com/is/image/MichaelKors/MU97EYCBGL-0001_1?wid=558&hei=748&op_sharpen=1&resMode=sharp2&qlt=90', '//michaelkors.scene7.com/is/image/MichaelKors/MU97EYCBGL-0001_2?wid=558&hei=748&op_sharpen=1&resMode=sharp2&qlt=90', '//michaelkors.scene7.com/is/image/MichaelKors/MU97EYCBGL-0001_3?wid=558&hei=748&op_sharpen=1&resMode=sharp2&qlt=90', '//michaelkors.scene7.com/is/image/MichaelKors/MU97EYCBGL-0001_1?wid=1300', '//michaelkors.scene7.com/is/image/MichaelKors/MU97EYCBGL-0001_2?wid=1300', '//michaelkors.scene7.com/is/image/MichaelKors/MU97EYCBGL-0001_3?wid=1300']

关于python - 如果存在子字符串,如何从列表中获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57215460/

相关文章:

javascript - 如何在 Selenium 中使用 JavaScript 检查输入是否被禁用

python - 如何从链接中获取图像?

python - REST/JSON/XML-RPC/SOAP

python - 计算 CFD 网格中点之间的距离

python - 优化 Django 测试的 fixture 加载部分的最佳方法是什么?

相当于 XPath 的 CSS 选择器

selenium - 如何模拟有人是 "watching"的类长?

selenium - 使用 GUI 进行自动化网站测试

python - Django 错误 : conversion from bytes to Decimal is not supported

python - OpenCV 3.4.3与Python 3.6.7兼容吗?