scrapy分页获取豆瓣电影
时间: 2023-11-21 08:41:47 浏览: 32
可以使用 Scrapy 的 Request 和 Response 对象来实现分页获取豆瓣电影的数据。
以下是一个简单的 Scrapy 爬虫示例,用于获取豆瓣电影 Top250 的前 10 页数据:
```python
import scrapy
class DoubanMovieSpider(scrapy.Spider):
name = 'douban_movie'
allowed_domains = ['movie.douban.com']
start_urls = ['https://movie.douban.com/top250']
def parse(self, response):
# 解析当前页的电影列表
for movie in response.css('.item'):
yield {
'title': movie.css('.title::text').get(),
'rating': movie.css('.rating_num::text').get(),
'link': movie.css('.hd a::attr(href)').get()
}
# 获取下一页的链接并发送请求
next_page_link = response.css('.next a::attr(href)').get()
if next_page_link:
yield scrapy.Request(response.urljoin(next_page_link), callback=self.parse)
```
在上面的代码中,`parse` 方法首先解析当前页的电影数据,并使用 `yield` 返回结果。
然后,它从页面中获取下一页链接,并使用 `response.urljoin()` 方法将其转换为绝对 URL。最后,它使用 `scrapy.Request` 发送下一页的请求,并将回调函数设置为 `parse`,以便递归地获取所有页面的数据。
要运行此代码,请将其保存为 `douban_movie.py` 文件,并在终端中导航到包含该文件的目录。然后,运行以下命令:
```
scrapy runspider douban_movie.py -o douban_movie.csv
```
这将运行爬虫,并将结果保存到名为 `douban_movie.csv` 的 CSV 文件中。