我正在尝试从天才歌词的歌曲搜索中获取歌曲的标题,但是,使用.find_all(“ div”,class _ =“ mini_card-title”)来尝试获取歌曲名称并没有工作,但是.find_all(“ div” class _ =“ header”)确实可以工作!
这仅适用于我正在研究的一个小型项目,该项目在python 3.7的Visual Studio 2019上运行。我正在使用2个模块:请求和bs4。我试图更改解析器,更改find_all以查找和选择,但是这些都不起作用。
无效的代码:
soup = bs4.BeautifulSoup(res.text, "html.parser")
a = soup.find_all("div", class_="mini_card-title")
print(a)
有效的代码:
soup = bs4.BeautifulSoup(res.text, "html.parser")
a = soup.find_all("div", class_="header")
print(a)
我希望得到歌曲的名称,即使获得页面上所有歌曲的名称也可以,但是目前我只得到一个空白列表。
答案 0 :(得分:0)
您可以使用页面用于动态获取结果的API来获取所有信息。我显示了打印一些标题,但浏览json响应以查看所需内容。
import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://genius.com/api/search/multi?per_page=5&q=something').json()
for item in r['response']['sections']:
for subitem in item['hits']:
if 'title' in subitem['result']:
print(subitem['result']['title'])