【发布时间】:2020-06-05 10:41:24
【问题描述】:
我正在使用 Python 3 和 Selenium 从以下网站获取一些图片链接:
import sys
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.proxy import Proxy, ProxyType
chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get('https://www.sky.com/tv-guide/20200605/4101-1/107/Efe2-364')
link_xpath = '/html/body/main/div/div[2]/div[2]/div/div/div[2]/div/div[2]/div[1]/div/div/div[2]/div/img'
link_path = driver.find_element_by_xpath(link_xpath).text
print(link_path)
driver.quit()
解析此 URL 时,您可以在页面中间看到有问题的图像。当您在 Google Chrome 中右键单击并检查元素时,您可以在 Chrome 开发工具中右键单击元素本身并获取此图像的 xpath。
所有看起来都是为了我,但是在运行上面的代码时,我收到以下错误:
Traceback (most recent call last):
File "G:\folder\folder\testfilepy", line 16, in <module>
link_path = driver.find_element_by_xpath(link_xpath).text
File "G:\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "G:\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
'value': value})['value']
File "G:\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "G:\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/main/div/div[2]/div[2]/div/div/div[2]/div/div[2]/div[1]/div/div/div[2]/div/img"}
(Session info: headless chrome=83.0.4103.61)
谁能告诉我为什么 Selenium 找不到提供的 xpath?
【问题讨论】:
-
试试这个
link_xpath = '//div[@class="c-bezel programme-content__image"]//img',但实际上元素没有返回文本,你要实现什么,属性是什么? -
嗨 - 在检查元素时,我看到一个指向图像的 http 链接:images.metadata.sky.com/pd-image/… ....我想基本上抓住那个链接
标签: python selenium xpath css-selectors webdriverwait