如何使用 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 从网站中提取和下载所有图像?

如何使用Python中的BeautifulSoup从HTML链接解析嵌套表?

我如何从 BeautifulSoup 中获取 CData

如何使用 BeautifulSoup 从 Metacritic 网站中提取电影类型