Beautifulsoup чистой печати и новой строки - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть html страница, подобная этой;

  
<li>Presence of registry value: badwindo<br/>with data: &lt;<em>system folder</em>&gt;\badwindo.exe<br/>in registry key: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run</li>
</ul>
</div>

, когда я пытаюсь получить чистую распечатку этого с использованием

match.get_text()

У меня линии придерживаются сразу друг за другом без пробела (например, ключ реестра badwindo.exein :). Кроме того, используя

match.get_text(seprator="\n")

я получаю что-то вроде этого:

с данными: <системная папка> \ badwindo.exe в разделе реестра: HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run

Есть идеи, как мы можем правильно использовать <и>? Я не хочу вмешиваться в пост-обработку и предпочитаю выяснить, как правильно распечатать это.

Интересно, что когда я пытался опубликовать результат, предварительный просмотр показывал мне правильную версию (точный вывод, который я ищу, без <и>)! Поэтому мне пришлось заменить <на <и> на>, чтобы вывод был показан здесь, как я вижу здесь. Есть идеи, что происходит?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Я не уверен, что вы хотите. Я сравнил два метода ниже.

from bs4 import BeautifulSoup
from simplified_scrapy import SimplifiedDoc
html = r'''
<li>Presence of registry value: badwindo<br/>with data: &lt;<em>system folder</em>&gt;\badwindo.exe<br/>in registry key: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run</li>
</ul>
</div>
'''
doc = SimplifiedDoc(html)
print (doc.li.text)

soup = BeautifulSoup(html,'lxml')
print (soup.get_text())

Результат :

Presence of registry value: badwindowith data: &lt;system folder&gt;\badwindo.exein registry key: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Presence of registry value: badwindowith data: <system folder>\badwindo.exein registry key: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
0 голосов
/ 13 февраля 2020

Я обычно использую это простое решение

html = "<li>Presence of registry ... </div>"

html = html.replace("<br>", "\n")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...