您的位置:

爬取豆瓣电影Top250指南

一、爬取豆瓣电影Top250饼图

我们可以使用Python的matplotlib库来创建豆瓣电影Top250的饼图。代码如下:

import matplotlib.pyplot as plt
import pandas as pd

# 读取数据
data = pd.read_csv('douban_top250.csv', encoding='utf-8')

# 统计电影类型的数量
genre_count = pd.value_counts(data['genre'].values, sort=True)

# 取前10个电影类型
top10_genre = genre_count.head(10)

# 绘制饼图
plt.pie(top10_genre, labels=top10_genre.index, autopct='%1.1f%%')
plt.title('豆瓣电影Top250电影类型占比')
plt.show()

通过这个饼图,我们可以看到豆瓣电影Top250的电影类型分布情况。

二、爬取豆瓣电影Top250详细教程

爬取豆瓣电影Top250是一个非常常见的Web爬虫例子。我们可以使用Python中的requests和BeautifulSoup库来实现。

具体步骤如下:

  1. 通过requests库向目标网站发送请求,用BeautifulSoup库解析网页内容。
  2. 在BeautifulSoup对象中找到我们需要的电影信息,包括电影名称、导演、主演、评分、年份和标签等。
  3. 将这些信息存储到本地文件或者数据库中。

下面是Python代码实现:

import requests
from bs4 import BeautifulSoup
import csv

# 豆瓣电影Top250的URL
url = 'https://movie.douban.com/top250'

# 请求头信息
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

# 获取页面内容
response = requests.get(url, headers=headers)
content = response.content

# 创建BeautifulSoup对象,解析网页内容
soup = BeautifulSoup(content, 'html.parser')
list_containers = soup.find_all('div', {'class': 'item'})

# 创建用于存储数据的列表
data_list = []

# 遍历每个电影信息
for movie_container in list_containers:
    # 提取电影名
    movie_name = movie_container.find('span', {'class': 'title'}).get_text()

    # 提取导演、主演、分数、评价人数、标签和年份
    info_tag = movie_container.find('p', {'class': ''})
    movie_info = info_tag.get_text().strip()

    # 分离出导演、主演、年份等信息
    info_list = movie_info.split('\n')
    director = info_list[0][4:]
    actors = info_list[1][3:] if len(info_list) > 2 else ''
    year = info_list[-2][:-1]
    genre = info_list[-1].strip()

    # 提取评分信息
    rating_num_tag = movie_container.find('span', {'class': 'rating_num'})
    rating_num = rating_num_tag.get_text()

    # 提取评价人数信息
    comment_num_tag = movie_container.find('div', {'class': 'star'})
    comment_num = comment_num_tag.find_all('span')[-1].get_text()[:-3]

    # 将数据添加到列表中
    data_list.append([movie_name, director, actors, rating_num, comment_num, year, genre])

# 将数据写入CSV文件中
with open('douban_top250.csv', 'w', encoding='utf-8', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['电影名称', '导演', '主演', '评分', '评价人数', '年份', '电影类型'])
    writer.writerows(data_list)

上述代码可以让我们爬取豆瓣电影Top250,将相关信息存入CSV文件当中。

三、爬取豆瓣电影Top250参考文献

下面列出了一些关于爬取豆瓣电影Top250的参考文献:

  1. Python网络爬虫实战:实例讲解,方滨兴,电子工业出版社
  2. Python3网络爬虫开发实战,崔庆才,电子工业出版社
  3. Python网络爬虫:核心技术与实战,胡松涛,机械工业出版社
  4. BeautifulSoup官网文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html
  5. Requests官网文档:https://requests.readthedocs.io/en/master/

四、Scrapy爬取豆瓣电影Top250

如果使用Scrapy框架来爬取豆瓣电影Top250,我们需要做以下几个步骤:

  1. 创建一个Scrapy项目,并创建一个用于存储数据的Item。
  2. 定义爬虫规则,编写爬虫程序。
  3. 编写数据的解析规则。
  4. 将数据存储到本地文件或者数据库中。

我们可以使用Scrapy shell来帮助我们测试我们的数据解析规则。

下面是Scrapy爬取豆瓣电影Top250的代码实现:

import scrapy
from scrapy.selector import Selector
from douban_top250.items import DoubanTop250Item

class DoubanTop250Spider(scrapy.Spider):
    name = "douban_top250"
    allowed_domains = ["douban.com"]
    start_urls = ["https://movie.douban.com/top250"]

    def parse(self, response):
        sel = Selector(response)
        sites = sel.xpath('//div[@class="item"]')
        items = []
        for site in sites:
            # 创建Item对象
            item = DoubanTop250Item()
            item['movie_name'] = site.xpath('div[@class="pic"]/a/img/@alt').extract_first()
            item['director'] = site.xpath('div[@class="info"]/div[@class="bd"]/p/text()').re('.*导演:(.*)?主演.*')[0].strip()
            item['actors'] = site.xpath('div[@class="info"]/div[@class="bd"]/p/text()').re('.*主演:(.*)?(\s.*[0-9]{4})')[0].strip()
            item['rating_num'] = site.xpath('div[@class="info"]/div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract_first()
            item['comment_num'] = site.xpath('div[@class="info"]/div[@class="bd"]/div[@class="star"]/span[last()]/text()').extract_first().strip()[:-3]
            item['year'] = site.xpath('div[@class="info"]/div[@class="bd"]/p[@class=""]/text()').re('.*([0-9]{4}).*')[0]
            item['genre'] = site.xpath('div[@class="info"]/div[@class="bd"]/p[@class=""]/span[@class="genre"]/text()').extract_first().strip()
            items.append(item)
        return items

上述代码爬取豆瓣电影Top250,将对应的信息存储到DoubanTop250Item中。

五、爬取豆瓣Top250电影

如果我们想要获取豆瓣电影Top250的电影名称,我们可以使用BeautifulSoup库来实现。

下面是Python代码实现:

import requests
from bs4 import BeautifulSoup

# 豆瓣电影Top250的URL
url = 'https://movie.douban.com/top250'

# 请求头信息
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

# 获取页面内容
response = requests.get(url, headers=headers)
content = response.content

# 创建BeautifulSoup对象,解析网页内容
soup = BeautifulSoup(content, 'html.parser')
list_containers = soup.find_all('div', {'class': 'item'})

# 遍历每个电影信息
for movie_container in list_containers:
    # 提取电影名
    movie_name = movie_container.find('span', {'class': 'title'}).get_text()
    print(movie_name)

上述代码可以让我们获取豆瓣电影Top250的所有电影名称。

六、豆瓣电影Top250完整版

豆瓣电影Top250完整版可以在豆瓣电影的官网上找到。

URL: https://movie.douban.com/top250?start=0&filter=

注意:豆瓣电影Top250的完整版有多页,我们需要对每一页进行爬取。每页URL的参数start的取值范围是从0到225,间隔为25。

下面是Python代码实现:

import requests
from bs4 import BeautifulSoup
import csv

# 循环遍历所有页面
for i in range(0, 250, 25):
    # 豆瓣电影Top250的URL
    url = 'https://movie.douban.com/top250?start={}&filter='.format(i)

    # 请求头信息
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                      'Chrome/58.0.3029.110 Safari/537.3'}

    # 获取页面内容
    response = requests.get(url, headers=headers)
    content = response.content

    # 创建BeautifulSoup对象,解析网页内容
    soup = BeautifulSoup(content, 'html.parser')
    list_containers = soup.find_all('div', {'class': 'item'})

    # 创建用于存储数据的列表
    data_list = []

    # 遍历每个电影信息
    for movie_container in list_containers:
        # 提取电影名
        movie_name = movie_container.find('span', {'class': 'title'}).get_text()

        # 提取导演、主演、分数、评价人数、标签和年份
        info_tag = movie_container.find('p', {'class': ''})
        movie_info = info_tag.get_text().strip()

        # 分离出导演、主演、年份等信息
        info_list = movie_info.split('\n')
        director = info_list[0][4:]
        actors = info_list[1][3:] if len(info_list) > 2 else ''
        year = info_list[-2][:-1]
        genre = info_list[-1].strip()

        # 提取评分信息
        rating_num_tag = movie_container.find('span', {'class': 'rating_num'})
        rating_num = rating_num_tag.get_text()

        # 提取评价人数信息
        comment_num_tag = movie_container.find('div', {'class': 'star'})
        comment_num = comment_num_tag.find_all('span')[-1].get_text()[:-3]

        # 将数据添加到列表中
        data_list.append([movie_name, director, actors, rating_num, comment_num, year, genre])

    # 将数据写入CSV文件中
    with open('douban_top250.csv', 'a', encoding='utf-8', newline='') as f:
        writer = csv.writer(f)
        if i == 0:
            writer.writerow(['电影名称', '导演', '主演', '评分', '评价人数', '年份', '电影类型'])
        writer.writerows(data_list)

上述代码可以让我们爬取豆瓣电影Top250完整版。

七、爬取豆瓣电影Top250的实验报告

对于豆瓣电影Top250的实验报告,我们可以结合上述多个方面,进行实际操作,收集数据,并进行