欢迎访问宙启技术站
智能推送

使用Python构建一个IMDb电影评论抓取器

发布时间:2023-12-11 08:59:51

使用Python构建一个IMDb电影评论抓取器可以帮助我们获取IMDb电影页面上的评论信息。下面我将为你提供一个简单的实例来解释如何实现。

首先,我们需要使用requests库来发送HTTP请求并获取IMDb电影页面的HTML内容。然后,我们可以使用beautifulsoup库来解析HTML内容并提取我们所需的信息,如评论内容、评分等。

首先,我们需要安装所需的库,可以在终端中运行以下命令:

pip install requests
pip install beautifulsoup4

然后,我们可以开始编写代码。

import requests
from bs4 import BeautifulSoup

def get_movie_reviews(movie_id):
    url = f"https://www.imdb.com/title/{movie_id}/reviews"
    response = requests.get(url)
    soup = BeautifulSoup(response.content, 'html.parser')
    
    reviews = []
    for review in soup.find_all("div", class_="review-container"):
        rating_element = review.find("span", class_="rating-other-user-rating")
        rating = rating_element.span.text.strip() if rating_element else ""
        
        title = review.find("a", class_="title").text.strip()
        content = review.find("div", class_="text show-more__control").text.strip()
        
        reviews.append({
            "rating": rating,
            "title": title,
            "content": content
        })
    
    return reviews

if __name__ == "__main__":
    movie_id = "tt0111161"  # 《肖申克的救赎》的IMDb电影ID
    reviews = get_movie_reviews(movie_id)
    
    for review in reviews:
        print(f"Rating: {review['rating']}")
        print(f"Title: {review['title']}")
        print(f"Content: {review['content']}")
        print("-" * 50)

在这个例子中,我们定义了一个get_movie_reviews函数,它接受一个IMDb电影ID作为参数,并返回一个包含评论信息的字典列表。在函数内部,我们首先构建电影评论页面的URL,然后发送HTTP请求并获取HTML内容。接下来,我们使用beautifulsoup库解析HTML内容,并使用find_all方法查找所有评论容器的div元素。然后,我们通过find方法找到相应的评论信息,提取评分、标题和内容。最后,我们将评论信息的字典添加到reviews列表中,并返回该列表。

main函数中,我们使用了《肖申克的救赎》的IMDb电影ID作为示例。然后,我们调用get_movie_reviews函数并遍历评论列表,将评分、标题和内容打印出来。

这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。可以根据IMDb电影页面的HTML结构,进一步解析其他信息,如评论者的用户名、评论日期等等。同时,你可以使用其他的数据存储格式,如CSV、JSON等,将评论信息保存到文件中,以便进一步分析和使用。