我正在尝试从Letterboxd网站获得电影分级。我已经在其他网站上使用过类似的代码,并且该代码已经奏效,但是并没有从该网站获取我想要的信息。
import requests
from bs4 import BeautifulSoup
page = requests.get("https://letterboxd.com/film/avengers-endgame/")
soup = BeautifulSoup(page.content, 'html.parser')
final = soup.find("section", attrs={"class":"section ratings-histogram-
chart"})
print(final)
这不会打印任何内容,但网站上有该课程的标签,而我要的信息在该标签下。
答案 0 :(得分:0)
其背后的原因是,网站异步加载了大多数内容,因此您必须查看它发送到服务器的http请求,以便在加载页面布局后加载页面内容。您可以在浏览器的“网络”部分中找到它们(F12键)。 例如,他们用来加载评分的api之一就是:
https://letterboxd.com/csi/film/avengers-endgame/rating-histogram/
答案 1 :(得分:0)
您可以从另一个标签获取加权平均值
import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://letterboxd.com/film/avengers-endgame/')
soup = bs(r.content, 'lxml')
print(soup.select_one('[name="twitter:data2"]')['content'])
所有直方图的文本
import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://letterboxd.com/csi/film/avengers-endgame/rating-histogram/')
soup = bs(r.content, 'lxml')
ratings = [item['title'].replace('\xa0',' ') for item in soup.select('.tooltip')]
print(ratings)