如何在python中的每一行打印html输出?

时间:2016-08-29 07:38:16

标签: python html python-3.x web-scraping beautifulsoup

因为我是一名初学者,所以我正在制作一个小项目,我正在进行一些网络搜索。我想在python中使用beautifulsoup打印一首歌的歌词,但它的打印方式如下:

今天早上我向外望去,太阳已经消失了一些音乐开始我的一天我在一首熟悉的歌声中迷失了自己我闭上眼睛然后溜走了这不仅仅是一种感觉(不仅仅是一种感觉)当我听到那首老歌时他们过去玩(不仅仅是一种感觉)而且我开始做梦(不​​仅仅是一种感觉)直到我看到玛丽安走开了我看到我的玛丽安娜走了走了许多人​​来了又走了他们的脸随着岁月的流逝逐渐消失我还记得当我徘徊在夏天的天空中,太阳明亮了这不仅仅是一种感觉(不仅仅是一种感觉)当我听到他们曾经玩过的那首老歌(不仅仅是一种感觉)而且我开始做梦(不​​仅仅是一种感觉)直到我看到Marianne走路我看到我的玛丽安走了走走的时候,我累了,想着冷,我躲在我的音乐里,忘了那一天和一个我曾经知道的女孩的梦想我闭上了眼睛,她溜走了,她溜走了,这不仅仅是一种感觉(不仅仅是一种感觉)当我听到他们曾经演过的那首老歌(不仅仅是一种感觉)而且我开始做梦(不仅仅是一种感觉)直到我看到玛丽安走开了

这是我的代码:

import urllib
from bs4 import BeautifulSoup

html = urllib.urlopen("http://www.metrolyrics.com/more-than-a-feeling-lyrics-boston.html")

bsObj = BeautifulSoup(html, "lxml")

namelist = bsObj.find_all("div", {"id": "lyrics-body-text"})

print("".join([p.get_text(strip=True) for p in namelist]))

2 个答案:

答案 0 :(得分:1)

您需要将strip = True参数移至get_text。剥离字符串,导致您看到的连接输出。

删除它:

print("".join([p.get_text() for p in namelist]))  

它打印得很好。

答案 1 :(得分:0)

尝试将其写入简单的for循环

for p in namelist:
    print(p.get_text(strip=True))