scrapy爬虫项目实战豆瓣
时间: 2023-09-09 22:09:51 浏览: 98
本篇文章将介绍如何使用Scrapy框架实现豆瓣电影的爬虫项目。
1. 创建Scrapy项目
首先,我们需要安装Scrapy框架。在命令行中输入以下命令:
```
pip install scrapy
```
安装完成后,我们可以使用以下命令创建一个Scrapy项目:
```
scrapy startproject douban
```
这个命令将创建一个名为“douban”的目录,其中包含了Scrapy项目的基本文件结构。
2. 定义Item
在Scrapy中,Item是我们要爬取的数据的容器。在这个项目中,我们需要定义一个Item来存储每部电影的信息。
在“douban”目录下创建一个名为“items.py”的文件,并在其中添加以下代码:
```
import scrapy
class DoubanItem(scrapy.Item):
title = scrapy.Field()
score = scrapy.Field()
director = scrapy.Field()
actors = scrapy.Field()
release_date = scrapy.Field()
```
上述代码定义了一个名为“DoubanItem”的Item,包含了电影的标题、评分、导演、演员和上映日期等信息。每个字段都是一个Scrapy框架的Field对象。
3. 定义Spider
在Scrapy中,Spider是用来爬取网站的核心。在这个项目中,我们需要定义一个Spider来爬取豆瓣电影的信息。
在“douban”目录下创建一个名为“spiders”的文件夹,并在其中创建一个名为“douban_spider.py”的文件。在这个文件中,我们需要定义一个名为“DoubanSpider”的Spider类,代码如下:
```
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from douban.items import DoubanItem
class DoubanSpider(CrawlSpider):
name = 'douban'
allowed_domains = ['movie.douban.com']
start_urls = ['https://movie.douban.com/top250']
rules = (
Rule(LinkExtractor(allow=r'https://movie.douban.com/top250\?start=\d+'), callback='parse_item', follow=True),
)
def parse_item(self, response):
item = DoubanItem()
for movie in response.xpath('//div[@class="info"]'):
item['title'] = movie.xpath('div[@class="hd"]/a/span[@class="title"]/text()').extract_first()
item['score'] = movie.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract_first()
item['director'] = movie.xpath('div[@class="bd"]/p/text()').re_first(r'导演:\s+(.*)')
item['actors'] = movie.xpath('div[@class="bd"]/p/text()').re_first(r'主演:\s+(.*)')
item['release_date'] = movie.xpath('div[@class="bd"]/p/text()').re_first(r'(\d{4}-\d{2}-\d{2})\(.*\)')
yield item
```
上述代码定义了一个名为“DoubanSpider”的Spider类。在这个Spider中,我们首先定义了爬取的起始URL和允许爬取的域名。
接着,我们使用了一个名为“rules”的元组来定义了爬取规则。在这个项目中,我们只需要爬取豆瓣电影Top250页面中的信息,因此我们使用了一个名为“LinkExtractor”的链接提取器,用来提取所有Top250页面的URL。并且我们将回调函数设置为“parse_item”,表示每个页面都会调用这个函数进行处理。
最后,我们定义了一个名为“parse_item”的回调函数,用来解析每个Top250页面中的电影信息。在这个函数中,我们首先创建了一个名为“DoubanItem”的Item对象,用来存储电影信息。
接着,我们使用XPath表达式来提取每个电影的标题、评分、导演、演员和上映日期等信息,并将这些信息存储到“DoubanItem”对象中。
最后,我们使用“yield”语句将这个Item对象传递给Scrapy框架,表示这个Item对象已经被处理完成。
4. 运行爬虫
在“douban”目录下,在命令行中输入以下命令来运行爬虫:
```
scrapy crawl douban
```
运行完成后,爬虫会自动爬取豆瓣电影Top250页面中的信息,并将这些信息存储到名为“douban.csv”的文件中。
至此,我们已经成功地使用Scrapy框架实现了豆瓣电影的爬虫项目。
阅读全文