Как передать веб-элемент в BeautifulSoup - PullRequest
0 голосов
/ 19 ноября 2018

Я получаю веб-элемент, подобный этому

elements = browser.find_elements_by_xpath("//*[contains(text(), 'Open Until')]")

Теперь я должен передать этот элемент супу, чтобы найти его у следующего и предыдущего родного брата.Я пытаюсь это

soup = BeautifulSoup(elements,'html.parser')

Что мне написать

??? soup = BeautifulSoup(elements.source,'html.parser') ???

Пожалуйста, предложите

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

вам не нужно смешивать это, и вы не можете, у селена также есть метод, чтобы получить предыдущий и следующий брат, пример

from selenium import webdriver
driver = webdriver.Chrome()

driver.get('https://140f670e-5774-43b5-a1a5-c993f66fa51d.htmlpasta.com/')

element = driver.find_element_by_xpath("//*[contains(text(), 'Open Until')]")
prevSibling = element.find_element_by_xpath('.//preceding-sibling::*')
nextSibling = element.find_element_by_xpath('.//following-sibling::*')

print(prevSibling.tag_name + ': ' + prevSibling.text)
print(element.tag_name + ': ' + element.text)
print(nextSibling.tag_name + ': ' + nextSibling.text)
driver.close()
0 голосов
/ 19 ноября 2018

Это должен быть комментарий, но я не могу его добавить.Так должно быть:

soup = BeautifulSoup (elements.parent.page_source, 'html.parser')

или создать суп прямо из браузера:

soup = BeautifulSoup (browser.page_source, 'html.parser')

, а затем выполнить поиск и получить элементы в супе. В https://selenium нет информации об этом-python.readthedocs.io/locating-elements.html или https://saucelabs.com/resources/articles/selenium-tips-css-selectors

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...