Python爬取豆瓣排行榜教程
概述
在本教程中,我将教你如何使用Python编写爬虫程序来爬取豆瓣排行榜的数据。我们将使用Python中的requests
库来发送HTTP请求,使用BeautifulSoup
库来解析HTML页面,以及使用pandas
库来处理和保存数据。
整体流程
首先,我们来看一下整个爬取豆瓣排行榜的流程。我们可以将整个流程分为以下几个步骤:
步骤 | 描述 |
---|---|
1 | 发送HTTP请求获取豆瓣排行榜的HTML页面 |
2 | 解析HTML页面获取电影列表 |
3 | 遍历电影列表,提取电影信息 |
4 | 保存电影信息到CSV文件 |
接下来,我们将逐步详细介绍每个步骤需要做什么,并给出相应的代码示例。
步骤一:发送HTTP请求获取豆瓣排行榜的HTML页面
首先,我们需要使用Python的requests
库来发送一个GET请求,以获取豆瓣排行榜的HTML页面。下面是相应的代码:
import requests
# 发送GET请求
response = requests.get('
# 打印响应内容
print(response.text)
以上代码中,我们首先导入了requests
库,然后使用get
方法发送一个GET请求,并将响应结果保存在response
变量中。最后,我们打印了响应结果的文本内容。
步骤二:解析HTML页面获取电影列表
在第一步中,我们已经成功获取了豆瓣排行榜的HTML页面。接下来,我们需要使用BeautifulSoup
库来解析HTML页面,并提取出电影列表。下面是相应的代码:
from bs4 import BeautifulSoup
# 使用BeautifulSoup解析HTML页面
soup = BeautifulSoup(response.text, 'html.parser')
# 查找电影列表
movie_list = soup.find_all('div', class_='pl2')
# 打印电影列表
for movie in movie_list:
print(movie.text)
以上代码中,我们首先导入了BeautifulSoup
库,然后使用BeautifulSoup
类来解析HTML页面,并将解析结果保存在soup
变量中。然后,我们使用soup.find_all
方法来查找所有class属性为pl2
的div
标签,这些标签包含了电影的相关信息。最后,我们使用for
循环遍历电影列表,并打印每个电影的文本内容。
步骤三:提取电影信息
在第二步中,我们已经成功获取了电影列表。接下来,我们需要从电影列表中提取出电影的相关信息,例如电影名称、评分等等。下面是相应的代码:
# 提取电影信息
for movie in movie_list:
# 提取电影名称
name = movie.find('a').text.strip()
# 提取电影评分
rating = movie.find('span', class_='rating_nums').text.strip()
# 打印电影信息
print(f'名称:{name},评分:{rating}')
以上代码中,我们使用movie.find
方法来在每个电影的div
标签中查找电影名称和评分信息,并使用text
属性来获取文本内容。然后,我们使用strip
方法来去除字符串中的空白字符。最后,我们使用print
函数来打印电影的名称和评分。
步骤四:保存电影信息到CSV文件
在第三步中,我们已经成功提取了电影的相关信息。接下来,我们需要将这些信息保存到CSV文件中。下面是相应的代码:
import pandas as pd
# 创建DataFrame对象
data = {'名称': [], '评分': []}
df = pd.DataFrame(data)
# 添加电影信息到DataFrame对象
for movie in movie_list:
name = movie.find('a').text.strip()
rating = movie.find('span', class_='rating_nums').text.strip()
df = df.append({'名称': name, '评分': rating}, ignore_index=True