Селен находит текст между тегом верхнего и нижнего колонтитулов

#python-3.x #selenium

Вопрос:

 from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.sap.com/about/events/2021-05-25-online-pe-payment-processing-sap.html')
element = driver.find_element_by_xpath("/html/body")
print(element.text)
driver.close()

<html>
<head>
<body>
<div>
<header>....<header>
<main>
<div>
<header> ... <header>
...
...
...
<footer>...<footer>
 

Есть ли решение с использованием selenium python для получения текста из main путем удаления текста из 1-го верхнего и нижнего колонтитулов. Я не могу использовать xpath для основного тега, потому что он различается на нескольких веб-сайтах.

Ответ №1:

попробуйте это вместо этого : (Use of split())

 driver.get("https://www.sap.com/about/events/2021-05-25-online-pe-payment-processing-sap.html")
element = driver.page_source
remove_header = element.split("</header>")
remove_header_footer = remove_header[1].split("<footer>")
print(remove_header_footer[0])
 

Сначала я разделяю весь исходный код страницы </header> и сохраняю его в a remove_header . Теперь remove_header[1] у источника страницы снова не будет заголовка, разделенного с помощью <footer> , а оставшаяся строка теперь без header и footer

Комментарии:

1. Я обновил приведенный выше код, дайте мне знать, работает ли он для вас

2. Итак, после удаления верхнего и нижнего колонтитулов, как получить текст только из тега <main>. Переменная элемента, которую вы написали, называется driver.page_source. Он извлекает весь источник страницы, а не текст.

3. Вы не можете получить текст от драйвера.страница _source

4. из selenium импортируйте веб-драйвер # Драйвер пути к Chrome = веб-драйвер. Хром (водитель).вам(» sap.com/about/events/… ) элемент = водителем.page_source remove_header = элементом.сплит(«</header>») remove_header_footer = remove_header[1].сплит(«<footer>») а = водителем.find_element_by_xpath(«/HTML-код/тела») печать(а.текста)

5. Из приведенного выше кода мне нужно получить только текст