gpt4 book ai didi

python - 从产品概述菜单中的子页面获取文本

转载 作者:行者123 更新时间:2023-12-01 07:03:54 26 4
gpt4 key购买 nike

我正在尝试使用 Selenium 抓取一些数据。我可以获取所需的页面来加载并打开子页面,但我无法让 selenium 驱动程序从子菜单中找到 xpath。

我尝试使用 selenium 驱动程序单击子页面,但我再次遇到让 selenium 使用 xpath 的问题。

path = r"C:\Program Files\chromedriver_win32\chromedriver.exe"
driver = webdriver.Chrome(path)

#opening website
driver.get("http://elpris.dk")
time.sleep(2)

#setting zipcode to 2200 Nørrebro
driver.find_element_by_xpath("""//*[@id="zip"]""").click()
driver.find_element_by_xpath("""//*[@id="zip"]""").send_keys("2200")

#selecting the dropdown menu
driver.find_element_by_xpath("""//*[@id="btnSelectProfile"]""").click()

#selecting hus 4000 kwh
driver.find_element_by_xpath("""//*[@id="home"]/div[1]/div/div/form/div/ul/li[4]/span/a""").click()

#clicking on "Find Priser"
driver.find_element_by_xpath("""//*[@id="btnSubmitSearch"]""").click()
time.sleep(2)

#scrolling down to get all the table rows to make sure the full product page is loaded
i = 0
while i < 50:
driver.find_element_by_xpath("""/html/body""").send_keys(Keys.END)
i += 1

time.sleep(2)

#counting number of rows
rows = len(driver.find_elements_by_xpath("""//*[@id="results"]/div[2]/div[2]/div/div[2]/div/div/table/tbody/tr"""))

#counting number of col
cols = len(driver.find_elements_by_xpath("""//*[@id="results"]/div[2]/div[2]/div/div[2]/div/div/table/tbody/tr[1]/td"""))

print (rows)
print (cols)

#scroll up
driver.find_element_by_xpath("""/html/body""").send_keys(Keys.HOME)
time.sleep(2)


#entering each indivudual row and getting info
driver.find_element_by_xpath("""//*[@id="results"]/div[2]/div[2]/div/div[2]/div/div/table/tbody/tr[1]//*[@id="btnSeeMore"]""").click()
time.sleep(2)

abonnement = driver.find_element_by_xpath("""/html/body/div[6]/div/div/div/accordion/div/div[2]/div[2]/div/div/div/div[1]/span[3]/div[1]/span[2]""").text()

print(abonnement)

我想从子页面获取文本,然后关闭它并继续打开并从所有子页面获取信息。

enter image description here

首先,我只需要能够从第一个菜单中获取一些信息。例如红圈内的文字

提供服务的公司名称就是一个例子。

最佳答案

首先重要的是使用定位器中的最佳实践重构代码。您可以查找信息herehere .
其次,使用 WebDriverWait 而不是 sleep

这是包含上述所有内容的代码,用于在打开的模式窗口中选择一些元素:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)

# you code to click on **SE MERE**

main_details = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".productDetails .main-details p"))).text
price = driver.find_element_by_css_selector(".productDetails .price").text
subscription_monthly_payment = driver.find_element_by_css_selector(".productDetails .contractInfo [tooltip-checker='subscriptionMonthlyPayment'] + .value").text

driver.find_element_by_css_selector(".productDetails .close").click()

关于python - 从产品概述菜单中的子页面获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58518165/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com