Можно ли использовать Selenium для извлечения источника страницы, а затем использовать l xml для очистки данных по xpath? - PullRequest
0 голосов
/ 19 марта 2020

Selenium может использоваться для навигации по веб-сайту (войдите, получите html источник страницы на сайте),

, но в Selenium нет ничего, что могло бы найти / получить данные в этом HTML по xpath (find_element_by_xpath() найдет элементы, но не данные TEXT вне тегов, и поэтому нужно использовать что-то еще, например lxml), Selenium абсолютно не может быть использован для этого, как при попытке выдает ошибку.


Нет примеров использования Selenium для получения источника HTML, передачи его в l xml для анализа HTML и поиска / получения данных по xpath в любом месте. в Интернете.
Его не найти.

l xml примеры обычно приводятся в сочетании с Python библиотекой «запросов», из которой ответ в байтах (response.content)

l xml использует это response.content (байты), но с l xml никакие функции не принимают HTML в виде строки.

Selenium возвращает только html в виде строки: self.driver.page_source

Так что же здесь делать?


Мне нужно использовать l xml, потому что он предоставляет возможность xpath.

Я не могу использовать библиотеку запросов Python для входа на веб-сайт и перехода на страницу, она просто не работает с этот сайт из-за некоторых сложностей в том, как они создавали вещи.

Selenium - единственное, что будет работать для входа в систему, создания сеанса, передачи правильных файлов cookie в последующем запросе GET.

I нужно использовать selenium и 'page_source' (string), но я не уверен, как преобразовать в точные "байты", которые требуются функциям "l xml".


Это оказывается довольно сложно использовать Python из-за того, что библиотеки здесь не работают вместе, и отсутствие у Selenium опций для выдачи HTML в виде байтов,

и отсутствие l xml для приема данных как строка или байты.


любая помощь будет принята с благодарностью, но я не верю, что на нее можно ответить, если вы не столкнулись с этой проблемой и не успешно использовали Selenium + l xml вместе.

1 Ответ

0 голосов
/ 19 марта 2020

Попробуйте что-нибудь в этом духе и посмотрите, работает ли оно для вас:

data = self.driver.page_source
doc = lxml.html.fromstring(data)
target = doc.xpath('some xpath')
...