创建一个Scrapy爬虫项目并运行

308 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Scrapy五大基本构成:

Scrapy框架主要由五大组件组成,它们分别是调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)和实体管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。下面我们分别介绍各个组件的作用。

(1)、调度器(Scheduler):

调度器,说白了把它假设成为一个URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是 什么,同时去除重复的网址(不做无用功)。用户可以自己的需求定制调度器。

(2)、下载器(Downloader):

下载器,是所有组件中负担最大的,它用于高速地下载网络上的资源。Scrapy的下载器代码不会太复杂,但效率高,主要的原因是Scrapy下载器是建立在twisted这个高效的异步模型上的(其实整个框架都在建立在这个模型上的)。

(3)、 爬虫(Spider):

爬虫,是用户最关心的部份。用户定制自己的爬虫(通过定制正则表达式等语法),用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。 用户也可以从中提取出链接,让Scrapy继续抓取下一个页面。

(4)、 实体管道(Item Pipeline):

实体管道,用于处理爬虫(spider)提取的实体。主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。

(5)、Scrapy引擎(Scrapy Engine):

Scrapy引擎是整个框架的核心.它用来控制调试器、下载器、爬虫。实际上,引擎相当于计算机的CPU,它控制着整个流程。

创建爬虫:

1.在安装好scrapy后,使用scrapy startproject +项目名来创建一个scrapy项目

2.进入爬虫根目录下,使用:scrapy genspider +文件名+网址  命令来创建一个爬虫文件

创建之后目录结构如下:

image.png

4.更改配置.

5.在项目目录下输入scrapy crawl quotes -o quote.csv(数据保存类型.)

例子:

爬取名人名言:

import scrapy
class QuoteSpider(scrapy.Spider):
    name = 'quote'
    start_urls = ['http://quotes.toscrape.com/']
    def parse(self, response):
        quotelist=[]
        divs = response.xpath('//div[@class="quote"]')
        for div in divs:
            author = div.xpath('./span/small/text()').extract_first()
            text = div.xpath('./span[@class="text"]/text()').extract_first()
            dic = {
                'author':author,
                'text':text
            }
            quotelist.append(dic)
        return  quotelist

 目录结构如下:

image.png

运行爬虫:

image.png

image.png

image.png