scrapy爬取豆瓣电影top250具体代码
时间: 2023-07-02 16:06:27 浏览: 195
python-crawler-douban:豆瓣综合爬虫,使用 `Python-3.7 + Scrapy-1.5` 构建,含豆瓣电影、豆瓣读书、豆瓣音乐三类Top250内容爬取及短评爬取
下面是一个基于Scrapy框架编写的爬取豆瓣电影Top250的具体代码:
```python
import scrapy
class DoubanMovieItem(scrapy.Item):
# 定义需要爬取的数据字段
name = scrapy.Field()
score = scrapy.Field()
director = scrapy.Field()
actors = scrapy.Field()
class DoubanMovieSpider(scrapy.Spider):
name = "douban_movie"
allowed_domains = ["movie.douban.com"]
start_urls = ["https://movie.douban.com/top250"]
def parse(self, response):
# 获取电影列表中每个电影的链接
movie_links = response.css(".hd a::attr(href)").extract()
for link in movie_links:
yield scrapy.Request(link, callback=self.parse_movie)
# 获取下一页链接并继续爬取
next_page = response.css(".next a::attr(href)").extract_first()
if next_page:
yield scrapy.Request(next_page, callback=self.parse)
def parse_movie(self, response):
item = DoubanMovieItem()
item["name"] = response.css("[property='v:itemreviewed']::text").extract_first()
item["score"] = response.css(".rating_num::text").extract_first()
item["director"] = response.css("span [rel='v:directedBy']::text").extract_first()
item["actors"] = response.css("span [rel='v:starring']::text").extract()
yield item
```
以上代码中,我们首先定义了需要爬取的数据字段,包括电影名称、评分、导演和演员。接着我们定义了一个名为`DoubanMovieSpider`的Spider类,通过`start_urls`属性指定了初始URL,然后在`parse`方法中,我们首先获取电影列表中每个电影的链接,并通过`yield scrapy.Request`方法将这些链接传递给`parse_movie`方法进一步处理。接着,我们获取下一页链接并继续爬取。在`parse_movie`方法中,我们使用CSS选择器提取需要爬取的数据,并将其保存到一个`DoubanMovieItem`对象中,最后通过`yield`方法返回该对象。
阅读全文