Разделение текста внутри тега <pre>

1

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

<pre style="word-wrap: break-word; white-space: pre-wrap;">
11111111
11111112
11111113
11111114
11111115
</pre>

Любые предложения о том, как очистить каждый ряд?

Спасибо

Теги:
screen-scraping
beautifulsoup

2 ответа

3

Если это именно то , что вы хотите проанализировать, вы можете легко использовать splitlines() чтобы получить список строк, или вы можете настроить функцию split() следующим образом.

from bs4 import BeautifulSoup

content = """
<pre style="word-wrap: break-word; white-space: pre-wrap;">
11111111 
11111112 
11111113
11111114
11111115 
</pre>""" # This is your content

soup = BeautifulSoup(content, "html.parser")
stuff = soup.find('pre').text
lines = stuff.split("\n") # or replace this by stuff.splitlines()
# print(lines) gives ["11111111", "11111112", "11111113", "11111114", "11111115"]
for line in lines:
    print(line)
# prints each row separately.
  • 0
    Спасибо, но что, если есть 5000 строк? Иметь содержание HTML в коде не было бы солидным решением. Вот пример, адрес выхода: check.torproject.org/exit-addresses
  • 0
    Что касается приведенного вами примера, то здесь нет HTML-контента, а просто текст. Их bs4 там был бы бесполезен. Таким образом, в этом случае вы будете искать определенную последовательность повторяющихся строк и использовать split() соответственно. В вашем случае слово ExitNode повторяется однозначно, поэтому вы должны выполнить s.split('ExitNode') .
0

Если каждая строка действительно находится на отдельной строке, почему бы просто не разбить содержимое на список?

data = soup.find('pre').text
lines = data.splitlines()

Вы можете передать True в подпрограмму splitlines, чтобы сохранить окончания строк, если это то, что вы хотите.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню