Проблема с очисткой и сохранением данных с использованием Xpath и Selenium - PullRequest
0 голосов
/ 19 апреля 2020

Поэтому я пытаюсь собрать информацию о скорости, уровне, продолжительности, сертификации и сохранить их в CSV-файле. Прежде всего, я не знаю, правильно ли я это делаю, потому что я новичок в Selenium и не знаю, как правильно сохранить его в одном файле CSV. Вся информация поступает с этого сайта: вот ссылка . Я пытался использовать приведенный ниже код, но он не работал:

driver=webdriver.Firefox(executable_path="/usr/bin/geckodriver")

driver.get('https://alison.com/course/global-islamic-finance-and-banking')

rate = driver.find_element(By.XPATH, '//div[contains(@class,"course-banner")]//li[2]//div[2]')

level = driver.find_element(By.XPATH, '//span[contains(text(),"Academic - Third Level - Level 1")]')

duration = driver.find_element(By.XPATH, '//div[contains(@class,"course-brief-container")]//div[contains(@class,"course-brief")]//li[1]//div[2]')

certification = driver.find_element(By.XPATH, '//div[contains(@class,"course-brief-container")]//div[contains(@class,"course-brief")]//li[3]//div[2]')

Я хочу удалить эти данные и сохранить в файле CSV.

У вас есть идеи, как отказаться от этой вещи? Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 19 апреля 2020

Вам необходимо указать точный путь к элементу, из которого вы пытаетесь извлечь текст. В вашем коде xpath не точны к целевому элементу. Вы можете попробовать, как показано ниже.

Обратите внимание, что значение тарифа является комбинированным текстом, и вам придется удалить из него текст Rated.

driver.get("https://alison.com/course/global-islamic-finance-and-banking")
driver.maximize_window()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//ul[@class='course-banner--info']/li[2]/div[2]/h4")))
rate =  driver.find_element(By.XPATH, "//ul[@class='course-banner--info']/li[2]/div[2]/h4").text
level = driver.find_element(By.XPATH, "//ul[@class='course-banner--info']/li[3]/a/div[2]/span").text
duration = driver.find_element(By.XPATH, "//li[@class='course-icons']/div[2]/h3[contains(text(),'Duration')]/following-sibling::span").text
certification = driver.find_element(By.XPATH, "//li[@class='course-icons']/div[2]/h3[contains(text(),'Certification')]/following-sibling::span").text

print(rate)
print(level)
print(duration)
print(certification)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...