一、爬取豆瓣電影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庫來實現。
具體步驟如下:
- 通過requests庫向目標網站發送請求,用BeautifulSoup庫解析網頁內容。
- 在BeautifulSoup對象中找到我們需要的電影信息,包括電影名稱、導演、主演、評分、年份和標籤等。
- 將這些信息存儲到本地文件或者數據庫中。
下面是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的參考文獻:
- Python網絡爬蟲實戰:實例講解,方濱興,電子工業出版社
- Python3網絡爬蟲開發實戰,崔慶才,電子工業出版社
- Python網絡爬蟲:核心技術與實戰,胡松濤,機械工業出版社
- BeautifulSoup官網文檔:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html
- Requests官網文檔:https://requests.readthedocs.io/en/master/
四、Scrapy爬取豆瓣電影Top250
如果使用Scrapy框架來爬取豆瓣電影Top250,我們需要做以下幾個步驟:
- 創建一個Scrapy項目,並創建一個用於存儲數據的Item。
- 定義爬蟲規則,編寫爬蟲程序。
- 編寫數據的解析規則。
- 將數據存儲到本地文件或者數據庫中。
我們可以使用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