【发布时间】:2022-08-19 07:53:42
【问题描述】:
所以我有从网站获取一些信息的功能(https://www.fragrantica.com/perfume/Dior/Sauvage-Eau-de-Parfum-48100.html;我想获得评级)。我安装了 selenium 4 和 webdriver_manager 来管理我的驱动程序等。
当我使用无头选项时,我得到“无法定位元素”错误,但是当我将其注释掉时,它工作得很好。我尝试将 Edge headless 用于另一个站点(但那是一周前的事),它似乎有效。 这是代码:
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.edge.options import Options
from webdriver_manager.microsoft import EdgeChromiumDriverManager
def get_info(url):
\'\'\'Get all the ratings from fragrantica site.\'\'\'
os.environ[\'WDM_LOCAL\'] = \'1\'
os.environ[\'WDM_LOG_LEVEL\'] = \'0\'
options = Options()
options.headless = True
options.add_experimental_option(\'excludeSwitches\', [\'enable-logging\'])
driver = webdriver.Edge(service=Service(
EdgeChromiumDriverManager().install()), options=options)
try:
driver.get(url)
lst = []
name = driver.find_element(
By.XPATH, \"//h1[contains(@class,\'text-center medium-text-left\')]\").text
WebDriverWait(driver, 30).until(ec.presence_of_element_located((By.XPATH, \'//*[@id=\"main-content\'
\'\"]/div[1]/div[\'
\'1]/div/div[2]/div[\'
\'4]/div[2]/div/div[\'
\'1]/div[3]/div/div\')))
ratings = driver.find_elements(By.XPATH,
\'.//div[@style=\"width: 100%; height: 0.3rem; border-radius: 0.2rem; \'
\'background: rgba(204, 224, 239, 0.4);\"]\')
votes = driver.find_element(
By.XPATH, \"//span[contains(@itemprop,\'ratingCount\')]\").text
for style in ratings:
lst.append(style.find_element(
By.TAG_NAME, \'div\').get_attribute(\'style\'))
driver.quit()
return name, lst, votes
except:
driver.quit()
raise
你们知道如何解决这个问题吗?我一直在努力寻找解释,但没有成功。一直弹出浏览器会很不方便。
非常感谢!
标签: python selenium selenium-webdriver webdriver microsoft-edge