The result of the xpath expression. is: [object Text]. It should be an element. Выдает ошибку при попытке вытащить текст

Trobochkin

Новичок
Пользователь
Авг 21, 2020
2
0
1
Windows 7
Python 3.8
Package Version
----------------- -------
astroid 2.4.2
atomicwrites 1.4.0
attrs 19.3.0
beautifulsoup4 4.9.1
colorama 0.4.3
iniconfig 1.0.1
isort 4.3.21
lazy-object-proxy 1.4.3
mccabe 0.6.1
more-itertools 8.4.0
packaging 20.4
pip 20.2.2
pluggy 0.13.1
py 1.9.0
pylint 2.5.3
pyparsing 2.4.7
pytest 6.0.1
selenium 3.141.0
setuptools 47.1.0
six 1.15.0
soupsieve 2.0.1
toml 0.10.1
urllib3 1.25.10
wrapt 1.12.1

Хотел написать простенький код, чтобы вытаскивать слова с сайта, но в самом начале что-то пошло не так...

Код:
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://am-en.ru/conversations/vocabulary.html')

words = driver.find_element_by_xpath("//*[@id='main']/div[2]/div[2]/strong[20]")
print(words.text)
translate = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[1]/div[2]/div[2]/div[2]/text()[42]")
print(translate)

Слово вытаскивается нормально, а вот перевод выдает ошибку: The result of the xpath expression. is: [object Text]. It should be an element. Подскажите как нужно вытаскивать этот текст раз это не элемент?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Подскажите как нужно вытаскивать этот текст раз это не элемент?
Вы можете получить элемент, который содержит этот текст:
Python:
translate = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[1]/div[2]/div[2]/div[2]")
потом получить его текст:
Python:
text = translate.text
потом найти нужный текст с помощью bs4 или срезов.
 

Trobochkin

Новичок
Пользователь
Авг 21, 2020
2
0
1
Вы можете получить элемент, который содержит этот текст:
Python:
translate = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[1]/div[2]/div[2]/div[2]")
потом получить его текст:
Python:
text = translate.text
потом найти нужный текст с помощью bs4 или срезов.

Так в том и смысл, что этот текст, находится в элементе куда записано вообще пол сайта, если не весь, хотелось бы просто получить текст, вместо того чтобы скачивать пол сайта и пытаться в этом разобраться с помощью bs4. Есть же указатель xpath значит селениум как-то может это достать, это я и хочу сделать, но метод find element говорит что это [object Text], поэтому наверняка есть другой метод достающий именно объект а не элемент, про него и спрашиваю
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
хотелось бы просто получить текст, вместо того чтобы скачивать пол сайта
В любом случае загружается весь контент страницы, а потом уже что-то в нем ищется.
Есть же указатель xpath значит селениум как-то может это достать, это я и хочу сделать, но метод find element говорит что это [object Text], поэтому наверняка есть другой метод достающий именно объект а не элемент
Selenium ищет элементы на странице, а не текст. Поэтому нужно получить элемент, а потом распарсить его текст.
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Вот ссылка на документацию по Selenium: ссылка.
 

Форум IT Специалистов