欢迎访问宙启技术站
智能推送

使用Scrapy爬取豆瓣电影Top250

发布时间:2024-01-04 03:05:33

Scrapy是一个用Python编写的强大的网络抓取框架,可以简化数据爬取过程中的许多复杂任务。本文将介绍如何使用Scrapy爬取豆瓣电影Top250,并提供一个简单的例子。

首先,我们需要在本地安装Scrapy。可以通过pip命令来安装Scrapy:

pip install scrapy

安装完成后,我们就可以开始编写我们的豆瓣电影Top250爬虫了。

新建一个名为douban_spider的Scrapy项目。在命令行中,使用以下命令:

scrapy startproject douban_spider

这将在当前目录下创建一个名为douban_spider的文件夹,并生成相关的项目文件。

进入douban_spider文件夹,创建一个名为douban_movie的爬虫。在命令行中,使用以下命令:

cd douban_spider
scrapy genspider douban_movie movie.douban.com

这将在spiders文件夹下创建一个名为douban_movie.py的爬虫文件,并生成相关的代码。

打开douban_movie.py文件,删除其中的注释内容,并修改代码:

import scrapy
from scrapy.selector import Selector

from douban_spider.items import DoubanMovieItem

class DoubanMovieSpider(scrapy.Spider):
    name = 'douban_movie'
    allowed_domains = ['movie.douban.com']
    start_urls = ['https://movie.douban.com/top250']

    def parse(self, response):
        movies = Selector(response).xpath('//div[@class="info"]')
        for movie in movies:
            item = DoubanMovieItem()
            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['quote'] = movie.xpath('div[@class="bd"]/p[@class="quote"]/span/text()').extract_first()
            yield item

在这段代码中,我们首先导入了需要的库和类。然后定义了一个名为DoubanMovieSpider的类,继承自scrapy.Spider。

在类中,我们定义了爬虫的名称(name)和允许爬取的域名(allowed_domains)。然后,我们指定了起始URL(start_urls)。

接下来,我们定义了一个名为parse的回调函数,用于处理收到的响应。在这个函数中,我们使用XPath来提取所需的数据,并创建一个DoubanMovieItem对象来保存数据。

最后,我们使用yield关键字返回item,以便Scrapy可以将其传给下一个阶段进行处理。

现在,我们需要定义一个DoubanMovieItem类,用于保存爬取结果。在items.py文件中,添加以下代码:

import scrapy

class DoubanMovieItem(scrapy.Item):
    title = scrapy.Field()
    score = scrapy.Field()
    quote = scrapy.Field()

在这个类中,我们使用了Scrapy提供的Field类定义了三个属性:title、score和quote。这些属性将用于保存我们爬取到的数据。

最后,我们需要设置一些Scrapy的配置项。在settings.py文件中,添加以下代码:

BOT_NAME = 'douban_spider'

SPIDER_MODULES = ['douban_spider.spiders']
NEWSPIDER_MODULE = 'douban_spider.spiders'

ROBOTSTXT_OBEY = True

以上就是一个简单的使用Scrapy爬取豆瓣电影Top250的例子。要执行爬虫,可以在命令行中使用以下命令:

scrapy crawl douban_movie

执行完成后,爬取的结果将保存到控制台中。如果要将结果保存到文件中,可以执行以下命令:

scrapy crawl douban_movie -o movies.csv

这将把结果保存到名为movies.csv的文件中。

希望这个例子对你理解如何使用Scrapy爬取豆瓣电影Top250有所帮助!如有任何疑问,欢迎提问。