如何使用 BeautifulSoup 从 Metacritic 网站中提取电影类型
Posted
技术标签:
【中文标题】如何使用 BeautifulSoup 从 Metacritic 网站中提取电影类型【英文标题】:How to extract movie genre from Metacritic website using BeautifulSoup 【发布时间】:2022-01-11 22:35:25 【问题描述】:我想为在https://www.metacritic.com/browse/movies/score/metascore/all/filtered?sort=desc找到的 Metacritic 的前 500 部电影做这个
每个流派都将从这样的详细链接中提取(对于第一个):https://www.metacritic.com/movie/citizen-kane-1941/details
只是需要一些帮助来从上述详细链接中的 html 中提取流派部分
我的 get_genre 函数(但我得到一个属性错误)
def get_genre(detail_link):
detail_page = requests.get(detail_link, headers = headers)
detail_soup = BeautifulSoup(detail_page.content, "html.parser")
try:
#time.sleep(1)
table=detail_soup.find('table',class_='details',summary=movie_name +" Details and Credits")
#print(table)
gen_line1=table.find('tr',class_='genres')
#print(gen_line1)
gen_line=gen_line1.find('td',class_='data')
#print(gen_line)
except:
time.sleep(1)
year=detail_soup.find(class_='release_date')
year=year.findAll('span')[-1]
year=year.get_text()
year=year.split()[-1]
table=detail_soup.find('table',class_='details',summary=movie_name +" ("+ year +")"+" Details and Credits")
#print(table)
gen_line1=table.find('tr',class_='genres')
#print(gen_line1)
gen_line=gen_line1.find('td',class_='data')
genres=[]
for line in gen_line:
genre = gen_line.get_text()
genres.append(genre.strip())
genres=list(set(genres))
genres=(str(genres).split())
return genres
【问题讨论】:
现在看看@JonSG 【参考方案1】:您过于专注于获得餐桌。只需使用您确定的元素。这是select
的示例
from bs4 import BeautifulSoup
import requests
headers='User-Agent': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_0) AppleWebKit/536.1 (KHTML, like Gecko) Chrome/58.0.849.0 Safari/536.1'
detail_link="https://www.metacritic.com/movie/citizen-kane-1941/details"
detail_page = requests.get(detail_link, headers = headers)
detail_soup = BeautifulSoup(detail_page.content, "html.parser")
genres=detail_soup.select('tr.genres td.data span')
print([genre.text for genre in genres])
>>> ['Drama', 'Mystery']
【讨论】:
以上是关于如何使用 BeautifulSoup 从 Metacritic 网站中提取电影类型的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 BeautifulSoup 从 HTML 中去除评论标签?
如何使用 BeautifulSoup 从网站中获取所有标题?
如何使用 beautifulSoup 从网站中提取和下载所有图像?