Объедините find_all красивые суповые метки в одну строку - PullRequest
0 голосов
/ 23 мая 2018

Я выполняю очистку с использованием Beautifulsoup и html-парсера, выбрал часть HTML-кода, с которой я хочу работать, и сохранил ее как «контейнеры».

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import ssl

my_url = 'https://www._________.co.uk/'
context = ssl._create_unverified_context()
uClient = uReq(my_url, context=context)
page_html = uClient.read()
uClient.close()

page_soup = soup(page_html, "html.parser")
containers = page_soup.findAll("div",{"class":"row"})

У меня есть вызовкогда дело доходит до пары тегов, которые все находятся рядом друг с другом в промежутке.

Я могу поднять результат, используя

company_string = container.span.find_all("b")

, который возвращает следующее:

[<b>Company</b>, <b>Name</b>, <b>Limited</b>]

Как я могу разделить теги и объединить их в строку, чтобы она выводилась как «Company Name Limited»?

Оригинальный html здесь:

<span class="company">
<a href="/cmp/Company-Name-Limited" onmousedown="this.href = 
appendParamsOnce(this.href, 'xxxx')" rel="noopener" target="_blank">
<b>Company</b> <b>Name</b> <b>Limited</b>
</a>
</span>

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

попробуйте следующее: -

outputString = ' '.join([item.get_text() for item in company_string])

Будет возвращена строка, содержащая значения всех элементов, соединенных пробелом.

0 голосов
/ 23 мая 2018

Использование .text

>>> output = ' '.join([item.text for item in company_string])
'Company Name Limited'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...