Как извлечь текст из текстового узла в HTML-домене через xpath? - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь получить доступ к базе данных Web of Science для их классификации определенных математических работ.В приведенном ниже HTML «Математика» будет желаемый результат.Категории включают в себя "Прикладная математика" и "Статистика", а также.В частности, я хочу повторить этот процесс для множества различных математических работ на разных веб-сайтах в этой онлайновой базе данных, и я не могу искать конкретный xpath, потому что xpath меняется с бумаги на бумагу.

HTML-код:

<p class="FR_field">
    <span class="FR_label">Web of Science Categories:</span>Mathematics</p>

Например, «Математика» расположена в

//*[@id="records_form"]/div/div/div/div[1]/div/div[8]/p[2]/text()

для этой конкретной бумаги, но индекс тега p или одного из тегов div может измениться с бумаги набумага.Код, который я написал для нахождения категории:

Python-код для удаленного доступа:

driver.find_element_by_xpath("//*[contains(text(), 'Web of Science Categories:')]").text[26:]

Но, похоже, это не сработает, и если я напечатаю результат, он ничего не напечатает.Возможно ли, что я сталкиваюсь с этой ошибкой из-за дополнительного разделения текста, которое я пытаюсь сделать?Я хочу просто «Математика», а не «Сеть наук Категории: Математика», поэтому я делю результат на 26 символов.

РЕДАКТИРОВАТЬ: Таким образом, после некоторого дальнейшего тестирования, кажется, что я действительно получил результат, но он не печатал, потому что мой код на python видит только «Web of Science Categories:» Естественно, разделение этой строки на 26-й символ ничего не напечатает.Тем не менее, это представляет новую головоломку о том, как на самом деле приобрести "Математика", а не "Web of Science Categories:"

1 Ответ

0 голосов
/ 18 мая 2018

В соответствии с предоставленным вами HTML-кодом для извлечения текста Математика вы можете использовать следующую строку кода:

text1 = driver.find_element_by_xpath("//p[@class='FR_field']").get_attribute("innerHTML").splitlines()[2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...