Python豆瓣电影Top250评分爬虫实战教程
Python豆瓣电影Top250评分爬虫实战教程
本文将带你一步步实现一个基于Python的豆瓣电影Top250评分爬虫,帮助你获取电影名称、评分和详情页链接等信息。
1. 准备工作
首先,我们需要导入必要的库:
import requests
from bs4 import BeautifulSoup
import pandas as pd
import time
2. 获取网页源代码
确定豆瓣电影Top250的网址,并发送请求获取网页源代码:
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/116.0.0.0 Safari/537.36'} # 设置请求头
response = requests.get(url, headers=headers)
response.encoding = 'utf-8'
3. 解析网页数据
使用BeautifulSoup库解析网页源代码,提取电影信息:
soup = BeautifulSoup(response.text, 'html.parser')
movie_list = soup.find('ol', class_='grid_view').find_all('li')
4. 存储电影信息
创建一个空列表,用于存储所有电影信息:
movies = []
针对每一部电影,构造一个字典,包含电影名称、电影评分、电影详情页链接等信息,并将字典添加到列表中:
for movie in movie_list:
movie_name = movie.find('span', class_='title').text
movie_rating = movie.find('span', class_='rating_num').text
movie_link = movie.find('a')['href']
movie_info = {'名称': movie_name, '评分': movie_rating, '链接': movie_link}
movies.append(movie_info)
5. 翻页爬取
通过查找网页源代码,获取下一页的链接,判断是否存在下一页,如果存在,则继续发送请求,重复步骤2-5,直到爬取完所有电影信息:
while True:
next_page_url = soup.find('span', class_='next').find('a')['href'] if soup.find('span', class_='next') else None
if next_page_url:
response = requests.get(next_page_url, headers=headers)
response.encoding = 'utf-8'
soup = BeautifulSoup(response.text, 'html.parser')
movie_list = soup.find('ol', class_='grid_view').find_all('li')
for movie in movie_list:
movie_name = movie.find('span', class_='title').text
movie_rating = movie.find('span', class_='rating_num').text
movie_link = movie.find('a')['href']
movie_info = {'名称': movie_name, '评分': movie_rating, '链接': movie_link}
movies.append(movie_info)
else:
break
time.sleep(1)
6. 保存数据
将列表中的信息保存到本地文件中,如csv文件:
df = pd.DataFrame(movies)
df.to_csv('douban_top250.csv', index=False)
7. 总结
本教程介绍了使用Python编写豆瓣电影Top250评分爬虫的基本步骤,你可以根据实际需要进行调整和扩展。在爬取数据时,请注意遵守网站的robots协议,避免过度请求导致封禁IP。
注意: 本教程仅供学习交流使用,请勿用于任何商业目的或违反法律法规的行为。
原文地址: https://www.cveoy.top/t/topic/l6K4 著作权归作者所有。请勿转载和采集!