Как отформатировать тексты, чтобы они выглядели так, как показано на сайте? - PullRequest
2 голосов
/ 01 июля 2019

Я перебираю веб-сайт с помощью Python selenium.Это код на веб-сайте:

enter image description here

, и я хотел бы, чтобы тексты выглядели так, как показано на сайте, то есть легко читались с помощьюразрывы строк, в организованном формате.

Я пытался использовать

driver.find_element_by_class_name('record-content.record-information.record-content_j').text

, но внутри \ n \ n символов.Я попробовал print(text), и выглядит лучше.Но есть ли способ сохранить текст в кадре данных или что-то еще, чтобы он был сохранен в организованном формате.Веб-сайт выглядит так: enter image description here Когда я пытался

rawData=driver.find_element_by_class_name('record-content.record-information.record-content_j').text
sanitizedData = rawData.replace('\n','')
print(BeautifulSoup(sanitizedData, 'html.parser').prettify())

Вывод выглядит так:

enter image description here The 'br 'теги для разрывов строк просто исчезли.

1 Ответ

0 голосов
/ 02 июля 2019

Поскольку мы извлекли через .text контент без включенных тегов <br>, мы можем использовать BeautifulSoup для фактического prittify нашего вывода.Точно так же мы можем использовать element.get_attribute('innerHTML'), если вы хотите поддерживать html, и убирать любые символы новой строки, если это необходимо.Надеюсь, это поможет:)

from selenium import webdriver
from bs4 import BeautifulSoup


def main():
    """ Start Firefox instance """
    driver = webdriver.Firefox()
    driver.get("http://yoursite.com")

    """ Extract content """
    rawData = driver.find_element_by_class_name('record-content.record-information.record-content_j').text

    """ Print to console """
    print(BeautifulSoup(rawData, 'html.parser').prettify())


if __name__ == "__main__":
    main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...