爬虫案例—抓取豆瓣电影的电影名称、评分、评语、评价人数
时间: 2024-10-16 13:11:20 浏览: 2
抓取豆瓣电影的电影信息通常涉及到网络爬虫技术,这里简要概述一个Python基础的Scrapy框架爬取豆瓣电影Top250的示例:
1. **准备工作**:
- 安装Scrapy库:`pip install scrapy`
- 需要申请豆瓣API key,因为豆瓣有反爬机制,直接访问网页可能会受到限制。
2. **创建项目**:
- 创建一个新的Scrapy项目:`scrapy startproject douban_movies`
- 进入项目文件夹并生成Item:`cd douban_movies && scrapy genspider douBan douBan.com`
3. **编写Spider**:
在`spiders/douBan.py`中编辑Spider:
```python
import scrapy
from douban_movies.items import DoubanMovieItem
class DouBanSpider(scrapy.Spider):
name = 'douban'
allowed_domains = ['movie.douban.com']
start_urls = ['https://movie.douban.com/top250']
def parse(self, response):
movie_list = response.css('ol#main ol li')
for movie in movie_list:
item = DoubanMovieItem()
title = movie.css('div.info > div.hd a::text').get() # 电影名称
rating = movie.css('.rating_num::text').get() # 评分
review_count = movie.css('.rating_people::text').re_first(r'\(\d+\)人评价\)') # 评价人数,需正则处理
review_link = movie.css('a span::attr(href)').get() # 评语链接,详情需要进一步请求
item['title'] = title
item['rating'] = float(rating)
item['review_count'] = int(review_count.strip(' ()')) if review_count else None
yield item
# 如果需要获取评论,可以添加对review_link的跟进请求,但豆瓣API通常不允许直接获取大量用户评论
```
4. **运行爬虫**:
`scrapy crawl douban`
这个例子展示了如何抓取每个电影的基本信息,但实际抓取评语会更复杂,可能需要使用Selenium等工具配合模拟浏览器交互,以及可能受限于豆瓣的反爬策略。