爬取豆瓣電影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的實驗報告,我們可以結合上述多個方面,進行實際操作,收集數據,並進行

原創文章,作者:PPPR,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/138524.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
PPPR的頭像PPPR
上一篇 2024-10-04 00:21
下一篇 2024-10-04 00:21

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • 運維Python和GO應用實踐指南

    本文將從多個角度詳細闡述運維Python和GO的實際應用,包括監控、管理、自動化、部署、持續集成等方面。 一、監控 運維中的監控是保證系統穩定性的重要手段。Python和GO都有強…

    編程 2025-04-29
  • Python wordcloud入門指南

    如何在Python中使用wordcloud庫生成文字雲? 一、安裝和導入wordcloud庫 在使用wordcloud前,需要保證庫已經安裝並導入: !pip install wo…

    編程 2025-04-29
  • Python應用程序的全面指南

    Python是一種功能強大而簡單易學的編程語言,適用於多種應用場景。本篇文章將從多個方面介紹Python如何應用於開發應用程序。 一、Web應用程序 目前,基於Python的Web…

    編程 2025-04-29
  • Python小波分解入門指南

    本文將介紹Python小波分解的概念、基本原理和實現方法,幫助初學者掌握相關技能。 一、小波變換概述 小波分解是一種廣泛應用於數字信號處理和圖像處理的方法,可以將信號分解成多個具有…

    編程 2025-04-29
  • Python字符轉列表指南

    Python是一個極為流行的腳本語言,在數據處理、數據分析、人工智能等領域廣泛應用。在很多場景下需要將字符串轉換為列表,以便於操作和處理,本篇文章將從多個方面對Python字符轉列…

    編程 2025-04-29
  • Python初學者指南:第一個Python程序安裝步驟

    在本篇指南中,我們將通過以下方式來詳細講解第一個Python程序安裝步驟: Python的安裝和環境配置 在命令行中編寫和運行第一個Python程序 使用IDE編寫和運行第一個Py…

    編程 2025-04-29
  • Python起筆落筆全能開發指南

    Python起筆落筆是指在編寫Python代碼時的編寫習慣。一個好的起筆落筆習慣可以提高代碼的可讀性、可維護性和可擴展性,本文將從多個方面進行詳細闡述。 一、變量命名 變量命名是起…

    編程 2025-04-29
  • FusionMaps應用指南

    FusionMaps是一款基於JavaScript和Flash的交互式地圖可視化工具。它提供了一種簡單易用的方式,將複雜的數據可視化為地圖。本文將從基礎的配置開始講解,到如何定製和…

    編程 2025-04-29
  • Python中文版下載官網的完整指南

    Python是一種廣泛使用的編程語言,具有簡潔、易讀易寫等特點。Python中文版下載官網是Python學習和使用過程中的重要資源,本文將從多個方面對Python中文版下載官網進行…

    編程 2025-04-29

發表回復

登錄後才能評論