Python爬虫实战详解:如何高效爬取豆瓣电影Top250信息
一、前言
在数据获取和分析的领域中,网络爬虫是一项非常重要的技术。它可以帮助我们从网页上提取我们需要的数据。本次实战,我们将使用 Python 来编写一个简单的爬虫,爬取豆瓣电影 Top250 的相关信息,包括电影名称、评分、评价人数等。
二、环境准备
我们需要安装requests库用于发送 HTTP 请求获取网页内容,BeautifulSoup库用于解析 HTML 页面。可以使用pip命令进行安装:
pip install requests beautifulsoup4
三、代码实现
python
import requests
from bs4 import BeautifulSoup
# 存储所有电影信息的列表
movies_info = []
# 豆瓣电影Top250有10页,每页25条数据,通过循环依次访问每一页
for page in range(0, 250, 25):
# 构建当前页的URL,start参数表示从第几条数据开始显示
url = f'https://movie.douban.com/top250?start={page}'
# 设置请求头,模拟浏览器访问,避免被网站识别为爬虫而拒绝访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
# 发送HTTP GET请求获取网页内容
response = requests.get(url, headers=headers)
# 检查请求是否成功,状态码为200表示成功
if response.status_code == 200:
# 使用BeautifulSoup解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')
# 查找所有包含电影信息的div元素,其类名为item
movie_items = soup.find_all('div', class_='item')
# 遍历每个电影信息的div元素
for item in movie_items:
# 提取电影名称,电影名称在类名为title的span标签中
movie_name = item.find('span', class_='title').text
# 提取电影评分,评分在类名为rating_num的span标签中
movie_rating = item.find('span', class_='rating_num').text
# 提取评价人数,评价人数在类名为star的div标签下的最后一个span标签中,并去除“人评价”字符串
movie_people = item.find('div', class_='star').find_all('span')[-1].text.strip('人评价')
# 将提取到的电影信息存储在字典中
movie_info = {
'电影名称': movie_name,
'评分': movie_rating,
'评价人数': movie_people
}
# 将电影信息字典添加到movies_info列表中
movies_info.append(movie_info)
else:
# 若请求失败,打印失败的状态码
print(f'请求失败,状态码: {response.status_code}')
# 遍历存储所有电影信息的列表,并打印每部电影的信息
for info in movies_info:
print(info)
四、代码解析
请求网页:使用requests.get()方法发送 GET 请求,获取豆瓣电影 Top250 页面的内容。设置User-Agent头信息来模拟浏览器请求,避免被网站识别为爬虫而拒绝访问。
解析页面:使用BeautifulSoup库将获取到的 HTML 文本解析为 BeautifulSoup 对象,方便后续提取数据。
提取数据:通过查找对应的 HTML 标签和类名,提取电影名称、评分和评价人数等信息,并将其存储在字典中。
存储数据:将每个电影的信息字典添加到movies_info列表中。
五、实验结果展示
运行上述代码后,我们可以在控制台看到输出的每部电影的名称、评分和评价人数信息,如下所示(部分示例):
plaintext
{'电影名称': '肖申克的救赎', '评分': '9.7', '评价人数': '2583862'}
{'电影名称': '霸王别姬', '评分': '9.6', '评价人数': '1679587'}
{'电影名称': '阿甘正传', '评分': '9.5', '评价人数': '1347630'}
…
六、总结
通过本次实战,我们成功使用 Python 编写了一个简单的爬虫,爬取了豆瓣电影 Top250 的相关信息。在实际应用中,我们可以根据需要进一步扩展和优化爬虫,例如将数据保存到文件或数据库中,增加错误处理和异常捕获等。同时,要注意遵守网站的使用条款和法律法规,避免对网站造成不必要的负担和影响
作者:2301_81849697