Python 使用单个Xpath获取web中的第一个元素
我正在运行一个小的Python Selenium脚本,我想从这个站点上的第一个元素访问属性:。每隔几分钟,第一个元素就会不同,因此具有不同的Xpath标识符。Python 使用单个Xpath获取web中的第一个元素,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,我正在运行一个小的Python Selenium脚本,我想从这个站点上的第一个元素访问属性:。每隔几分钟,第一个元素就会不同,因此具有不同的Xpath标识符。 第一个元素具有不同的id/xpath,在任何时候访问它的可能性是什么?我指的第一个结果 提前多谢 在过去的15分钟里,我一直关注着这个网站,但对我来说,这个页面没有改变 尽管如此,我还是尝试使用BS4(您可以使用Selenium当前的浏览器会话填充BS4)来刮取数据,在BS4中,它应该始终首先返回第一个元素 from bs4 import
第一个元素具有不同的id/xpath,在任何时候访问它的可能性是什么?我指的第一个结果
提前多谢 在过去的15分钟里,我一直关注着这个网站,但对我来说,这个页面没有改变 尽管如此,我还是尝试使用BS4(您可以使用Selenium当前的浏览器会话填充BS4)来刮取数据,在BS4中,它应该始终首先返回第一个元素
from bs4 import BeautifulSoup
import requests
data = requests.get('https://www.mydealz.de/gruppe/spielzeug')
soup = BeautifulSoup(data.text, "html.parser")
price_info = soup.select(".cept-tp")
for element in price_info:
for child in element:
print(child)
当然,这只是为了价格,但您可以对其他元素应用相同的逻辑。要打印第一个标题,您必须诱导WebDriverWait以获得所需的元素的可见性()
,并且您可以使用以下任一选项:
- 使用
:CSS\u选择器
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.threadGrid div.threadGrid-title.js-contextual-message-placeholder>strong.thread-title>a"))).get_attribute("title"))
- 使用
:XPATH
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='threadGrid']//div[@class='threadGrid-title js-contextual-message-placeholder']/strong[@class='thread-title']/a"))).text)
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
- 两个背靠背执行的控制台输出:
[Mediamarkt@Ebay.de]多样的Gravitrax Erweiterungen günstig代码>
[Mediamarkt@Ebay.de]多样的Gravitrax Erweiterungen günstig代码>
-
方法
获取元素的给定属性或属性。
- 属性返回元素的文本。
你说的第一个元素是什么意思???你应该提到你要找的元素??你的代码试用版在哪里???请包括你当前的脚本。我指的第一个结果