【问题标题】:How to get the img (src) link from the Zomato order page?如何从 Zomato 订单页面获取 img (src) 链接?
【发布时间】:2021-04-28 14:34:32
【问题描述】:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

PATH = "/Users/macop/Tools/ChromeDriver/chromedriver"
driver = webdriver.Chrome(PATH)

driver.get("https://www.zomato.com/ncr/dominos-pizza-connaught-place-new-delhi/order")
time.sleep(5)


link = driver.find_element_by_class_name("hppEfq").get_attribute('src')

print(link)

for name in link:
    print(name.text)

driver.quit()

我得到的最后一个错误:

Message: no such element: Unable to locate element: {"method":"css selector","selector":".hppEfq"}

正在查找该页面的属性 src 的 img 标记中所有链接的列表...

【问题讨论】:

    标签: python selenium web-scraping src


    【解决方案1】:

    如上所述,没有任何类具有 exact 类属性。但是有一个类确实包含它。所以你实际上想找到包含hppEfq的类。

    此外,由于您只说要查找第一个元素,因此不确定您要循环什么。最后,要渲染该元素,您需要向下滚动。

    from selenium.webdriver.common.keys import Keys
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    
    PATH = "C:/chromedriver_win32/chromedriver.exe"
    driver = webdriver.Chrome(PATH)
    
    driver.get("https://www.zomato.com/ncr/dominos-pizza-connaught-place-new-delhi/order")
    
    html = driver.find_element_by_tag_name('html')
    html.send_keys(Keys.PAGE_DOWN)
    
    time.sleep(5)
    
    link = driver.find_element_by_css_selector("img[class*='hppEfq']").get_attribute('src')
    
    print(link)
    
    driver.quit()
    

    输出:

    https://b.zmtcdn.com/data/dish_photos/a3d/7ca006ec8907c2ae13fd006cf0853a3d.png?output-format=webp&fit=around|130:130&crop=130:130;*,*
    

    【讨论】:

    • 很抱歉没有明确说明我的问题,感谢您的解决方案,但您能否建议/帮助我如何为所有元素/图像/项目循环它。我尝试做link = driver.find_element_by_css_selector("img[class*='hppEfq']").get_attribute('src'),但得到一个错误AttributeError: 'list' object has no attribute 'get_attribute'
    • 这很奇怪。它正在返回一个列表。也许我在使用不同版本的 Selenium?试试:link = driver.find_element_by_css_selector("img[class*='hppEfq']")[0].get_attribute('src')
    【解决方案2】:

    该页面上没有类名为 hppEfq 的元素,所以我不知道您对什么图像感兴趣。
    例如该页面上的主图像是(//div[@height='100%']//img)[1]

    如果您想要所有图片,请尝试以下操作:
    list=driver.find_elements_by_xpath("img")
    现在,您拥有页面上所有图像的 Web 元素列表。
    要遍历此 Web 元素列表并从每个元素中获取 src,您可以

    sources = []
    for img in list:
      sources.append(img.get_attribute('src'))
      
    

    【讨论】:

    • 我已经发布了我正在寻找的东西的截图,请帮助
    • 查看我的更新答案。下次试着问你到底想得到什么:)
    猜你喜欢
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    相关资源
    最近更新 更多