Я использую Python Selenium, чтобы попытаться очистить или получить данные, потому что l xml так плохо документирован с помощью синтаксического анализа HTML и получения данных с использованием xpath, и что бы я ни пытался, с этой библиотекой ничего не работает.
У меня есть некоторый успех с Селеном, например: (но не всегда - отсюда и этот вопрос)
element = self.driver.find_element_by_xpath(xpath)
print(element.text)
Проблема:
Если у меня есть такой HTML сегмент в документе HTML:
<strong>Address:</strong>
24 some street, CA
<strong>Company:</strong>
ACME Inc.
, и я использую Firefox, чтобы получить xpath данных, или плагин Chrome, чтобы получить xpath к «24 какая-то улица, Калифорния», я не могу его получить (и не дает мне xpath к данным).
Я могу получить только xpath для «Address:», но мне это не нужно Мне нужны данные после закрывающего тега </strong>
.
Путь к тексту 'Адрес:' может быть примерно таким:
/html/body/div[2]/div[4]/div[1]/span/strong[2]
Что тогда это xpath к тексту после этого закрывающего тега </strong>
, который даст мне все до следующего начального тега <strong>
?
* 10 28 *
Обновление: Я уверен, что следующий текст является правильным xpath к тексту после тегов <strong></strong>
, но Selenium это не нравится.
Когда Я использую это с Selenium со следующим xpath, он не работает
xpath_wo_num = '/html/body/div[2]/div[4]/div[1]/span/strong[1]/following-sibling::text()[1]'
element = self.driver.find_element_by_xpath(xpath_wo_num)
Разработчики Selenium вставили указанный c код, который отклонил бы правильный xpath, потому что он возвращает TEXT.
Я получаю это сообщение об ошибке:
Message: invalid selector:
The result of the xpath expression "/html/body/div[2]/div[4]/div[1]/span/strong[1]/following-sibling::text()[1]" is: [object Text].
It should be an element.
(Session info: headless chrome=80.0.3987.132)