我使用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())
文本列表结果为: [“ 2013 Volkswagen Passat”,“ condition:excellent”]
但是我想要这样的结果: [“ 2013年大众帕萨特条件:优秀”]
在放入列表时如何合并两个文本?请帮忙!!!
答案 0 :(得分:0)
使用列表的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])
希望这会有所帮助!干杯!
答案 1 :(得分:0)
您可以使用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