我正试图从有着漂亮汤的广告牌中分析出某一天最热门的100次热播。我试着按类名选择区段,但它不起作用。我试着按类使用find_all,它可以工作。为什么find_all只在这种情况下起作用?
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发布于 2021-01-03 03:04:38
正如在文档中所解释的那样,这两种方法都取决于您试图实现的目标。
从本质上说,find_all(class_="Class1 Class2")几乎等同于select(.Class1.Class2),唯一的区别是前者需要精确的字符串,而后者需要CSS选择器,但不关心order1。
假设您有以下元素<p class="A B">
find_all(class_="B A") 不匹配,但select(.B.A)匹配
如果将语法修改为soup.select(".chart-element__information__song.text--truncate.color--primary"),则应该返回相同的值。
1-还有其他的区别,例如对regex的支持,这在docs中得到了解释。
https://stackoverflow.com/questions/65545425
复制相似问题