Веб-очистка Python с использованием BeautifulSoup, как объединить два <p>текста в один элемент списка - PullRequest
0 голосов
/ 01 сентября 2018

Я использую BeautifulSoup, чтобы сделать поиск в сети, поместить результат в список, HTML показывает, как это:

<p class="attrgroup">
            <span><b>2013 Volkswagen Passat</b></span>
            <br>
    </p>
<p class="attrgroup">
            <span>condition: <b>excellent</b></span>
            <br>
    </p>  
           
мой код:
title=[]
text=[]
for newpage in list:
webpage = urlopen(newpage).read()
soup = BeautifulSoup(webpage,'html.parser')
header=soup.find_all("span",attrs={"id":"titletextonly"})
info = soup.find_all("p",attrs={"class":"attrgroup"})
for h in header:
        title.append(h.get_text())
for m in info:
        text.append(m.get_text())

Результат текстового списка: ["Volkswagen Passat 2013", "состояние: отличное"]

Но я хочу получить такой результат: ["Состояние Volkswagen Passat 2013 года: отлично"]

Как объединить два текста при внесении в список? пожалуйста помогите !!!

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

вы можете использовать stripped_strings

from bs4 import BeautifulSoup


html = """<p class="attrgroup">
        <span><b>2013 Volkswagen Passat</b></span>
        <br>
      </p>
      <p class="attrgroup">
        <span>condition: <b>excellent</b></span>
        <br>
</p>"""

tag = BeautifulSoup(html, 'html.parser')

data = (' '.join(tag.stripped_strings))
print data
0 голосов
/ 01 сентября 2018

Используйте join() функцию списков.

title = []
for h in header:
        title.append(h.get_text())
title = ''.join([title])

Иначе, добавить элементы в список вместо текста и использовать list comprehension для объединения текстов.

title = []
for h in header:
        title.append(h)
title = ''.join([i.text for i in title])

Надеюсь, это поможет! Ура!

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