我正试图从有靓汤的广告牌上解析出某一天最热门的100首歌曲。我试图按类名选择节,但它不起作用。我试着在课堂上使用find_all,效果很好。 为什么find_都只在这种情况下起作用
from bs4 import BeautifulSoup
import requests
billboard_website = "https://www.billboard.com/charts/hot-100/2019-05-09"
response = requests.get(f"{billboard_website}")
soup = BeautifulSoup(response.text, "html.parser")
print(soup.select(".chart-element__information__song text--truncate color--primary")) # returns an empty list
print(soup.find_all(class_="chart-element__information__song text--truncate color--primary")) # returns the full list
正如docs中所解释的,这两种方法都取决于您试图实现的目标
本质上
find_all(class_="Class1 Class2")
几乎等同于select(.Class1.Class2)
。唯一的区别是前者需要精确的字符串,而后者需要CSS选择器,但不关心顺序[1],例如假设您有以下元素
<p class="A B">
find_all(class=“B A”)将不匹配,但
select(.B.A)
将匹配如果将语法修改为
soup.select(".chart-element__information__song.text truncate.color primary")
,它应该返回相同的值[1]-还有其他不同之处,例如对regex的支持,这些在文档中进行了解释
相关问题 更多 >
编程相关推荐