python利用requests库和html.parser爬取豆瓣top250首页的电影名字和评分
时间: 2025-06-12 18:07:04 浏览: 21
<think>好的,我需要帮助用户解决如何使用Python的requests库和html.parser模块爬取豆瓣Top250电影的名称和评分的问题。首先,我得回忆一下爬虫的基本流程,包括发送请求、解析HTML内容以及提取数据。
用户提到了使用requests和html.parser,所以应该不需要用到BeautifulSoup以外的解析库。不过,用户可能对HTML结构不太熟悉,我需要先确认豆瓣Top250页面的结构。根据之前的引用内容,用户可能参考了已有的代码示例,但需要调整以适应html.parser。
首先,发送请求。用户需要获取网页内容,可能会遇到反爬机制,比如User-Agent检查。所以代码中需要添加headers模拟浏览器访问,否则可能返回403错误。引用中的示例代码可能没有处理这一点,需要补充。
接下来,解析HTML。使用html.parser的话,可以通过BeautifulSoup来解析。需要找到包含电影信息的HTML元素。查看豆瓣Top250的页面结构,每个电影项通常包裹在一个class为“item”的div中。电影名称可能在<span class="title">里,评分在<span class="rating_num">里。
然后,提取数据。遍历每个“item”div,提取名称和评分。需要注意的是,豆瓣可能有多个标题元素,比如中文名和英文名,用户可能只需要中文名,所以需要选择第一个<span class="title">。
最后,存储数据。可以用列表存储,再转为DataFrame或用csv保存。但用户示例中可能只需要打印出来。
可能的问题点:反爬措施,如验证码或IP封锁,但Top250页面相对容易爬取,不过还是需要注意设置请求头,并控制请求频率。此外,HTML结构是否有变化,需要验证当前的元素类名是否正确。
现在,整理步骤:导入库、设置请求头、发送请求、检查状态码、解析HTML、查找所有电影项、循环提取名称和评分、处理可能的异常(比如某部电影没有评分)、存储结果。
示例代码需要包括这些部分,并确保语法正确。同时,提醒用户遵守豆瓣的robots.txt,并设置适当的延迟以避免对服务器造成压力。</think>### 分步解答
以下是使用Python的`requests`库和`html.parser`解析豆瓣Top250电影名称与评分的示例代码:
```python
import requests
from bs4 import BeautifulSoup
# 1. 设置请求头模拟浏览器访问(避免被反爬)
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"
}
# 2. 发送请求获取页面内容
response = requests.get("https://movie.douban.com/top250", headers=headers)
print("响应状态码:", response.status_code) # 正常应返回200[^1]
if response.status_code == 200:
# 3. 使用html.parser解析HTML
soup = BeautifulSoup(response.text, "html.parser")
# 4. 定位所有电影项(观察网页结构,每个电影在class="item"的div中)
movie_items = soup.find_all("div", class_="item")
# 5. 遍历提取数据
movies = []
for item in movie_items:
# 提取中文标题(第一个span.title)
title = item.find("span", class_="title").text.strip()
# 提取评分(class="rating_num")
rating = item.find("span", class_="rating_num").text.strip()
movies.append({"名称":
阅读全文
相关推荐


















