使用 BeautifulSoup 从网站抓取数据时出现问题
Problem with scraping data from website with BeautifulSoup
我正在尝试从 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)
这什么都不打印,但是网站上有一个标签 class,我想要的信息就在标签下面。
这背后的原因是,该网站异步加载大部分内容,因此您必须查看它发送到服务器的 http 请求,以便在加载页面布局后加载页面内容。您可以在浏览器的 "network" 部分找到它们(F12 键)。
例如,他们用来加载评级的 API 之一是这个:
https://letterboxd.com/csi/film/avengers-endgame/rating-histogram/
您可以从另一个标签中获取加权平均值
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)
我正在尝试从 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)
这什么都不打印,但是网站上有一个标签 class,我想要的信息就在标签下面。
这背后的原因是,该网站异步加载大部分内容,因此您必须查看它发送到服务器的 http 请求,以便在加载页面布局后加载页面内容。您可以在浏览器的 "network" 部分找到它们(F12 键)。 例如,他们用来加载评级的 API 之一是这个:
https://letterboxd.com/csi/film/avengers-endgame/rating-histogram/
您可以从另一个标签中获取加权平均值
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)