python爬取豆瓣影评代码
时间: 2025-05-31 18:28:43 浏览: 13
### Python 实现豆瓣影评爬虫
以下是基于 Python 的豆瓣影评爬取代码示例。此代码利用 `requests` 和 `BeautifulSoup` 库来获取并解析网页数据。
#### 安装依赖库
在运行代码之前,请确保安装所需的第三方库:
```bash
pip install requests beautifulsoup4 lxml
```
#### 爬虫代码实现
以下是一个简单的豆瓣影评爬虫代码:
```python
import requests
from bs4 import BeautifulSoup
import time
def fetch_douban_reviews(movie_id, page_limit=5):
base_url = f"https://movie.douban.com/subject/{movie_id}/comments"
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'
}
all_reviews = []
for i in range(page_limit):
url = f"{base_url}?start={i * 20}&limit=20&sort=new_score&status=P"
response = requests.get(url, headers=headers)
if response.status_code != 200:
print(f"Failed to retrieve data from {url}. Status code: {response.status_code}")
break
soup = BeautifulSoup(response.text, 'lxml')
reviews = soup.find_all('div', class_='comment') # 找到评论部分
for review in reviews:
username = review.find('span', class_='comment-info').find('a').text.strip()
comment_text = review.find('p', class_='').get_text(strip=True)
rating_tag = review.find('span', class_='rating')
rating = None
if rating_tag is not None:
rating_class = rating_tag['class'][0][-2:]
rating = int(rating_class) / 10
all_reviews.append({
'username': username,
'review': comment_text,
'rating': rating
})
time.sleep(1) # 防止请求过快被封禁
return all_reviews
if __name__ == "__main__":
movie_id = "1292052" # 替换为目标电影ID,例如《肖申克的救赎》对应的ID为1292052
reviews_data = fetch_douban_reviews(movie_id, page_limit=3)
for idx, review in enumerate(reviews_data[:10], start=1):
print(f"[Review {idx}] User: {review['username']}, Rating: {review['rating']} \nComment: {review['review']}\n{'-'*80} ")
```
以上代码实现了如下功能[^1]:
- 使用指定的电影 ID 构建目标 URL。
- 设置 HTTP 请求头中的 `User-Agent` 来模拟浏览器访问行为。
- 解析 HTML 数据提取用户名、评分以及评论内容。
- 控制每页加载数量并通过循环抓取多页数据。
- 添加延时防止因频繁请求而触发反爬机制。
请注意,在实际应用中应遵循网站的服务条款和法律法规,合理控制频率与范围以免给服务器带来过大压力或违反规定[^2]。
### 注意事项
由于豆瓣可能更新其页面结构或者增加更严格的防爬措施,因此如果发现某些标签无法匹配,则需重新分析当前版本下的HTML源码调整相应选择器路径。
阅读全文
相关推荐
















