我写了一个脚本,可以在一秒钟内从互联网上下载歌词。 div中的歌词文本,在行的末尾带有<br>
。当我尝试通过BeautifulSoup获取文本时。我收到此错误:
回溯(最近通话最近):
中的文件“ /home/rohit/Desktop/lyrics_finder.py”,第27行 app = EpicLyricFinderApp()
init
中的文件“ /home/rohit/Desktop/lyrics_finder.py”,第10行 self.app()
在应用程序中的文件“ /home/rohit/Desktop/lyrics_finder.py”,第21行
为我在container.get_text()中:
AttributeError:“列表”对象没有属性“ get_text”
我会尝试许多不同的方法,但是我会解决此问题
我的代码:
from bs4 import BeautifulSoup
import os, requests, re
class EpicLyricFinderApp:
def __init__(self):
self.text = '+'.join(input('Enter song name and also include singer: ').split(' '))
self.url = "https://search.azlyrics.com/search.php?q=let+me+love+you{}".format(self.text)
self.lyrics = ''
self.app()
def app(self):
req = requests.get(self.url).content
soup = BeautifulSoup(req, 'html.parser')
links = [link['href'] for link in soup.select('.text-left a')]
# Open another url
req1 = requests.get(links[0]).content
soup1 = BeautifulSoup(req1, 'html.parser')
container = soup1.select('body > div.container.main-page > div > div.col-xs-12.col-lg-8.text-center > div:nth-child(10)')
for i in container.get_text():
print(i)
if __name__ == '__main__':
app = EpicLyricFinderApp()
我期望的是
如何在Beautifulsoup中跳过<br/>
以获取文本。
答案 0 :(得分:0)
容器是列表对象而不是元素。这就是为什么会出现此错误。
AttributeError:“列表”对象没有属性“ get_text”
您需要在迭代中获取文本。
for i in container:
print(i.get_text())