📜  Scrapy教程(1)

📅  最后修改于: 2023-12-03 14:47:19.003000             🧑  作者: Mango

Scrapy教程

Scrapy是一个用于数据抓取的Python框架,它可以自动化地从网站中提取数据,并可以处理JS渲染的动态网页。如果你想要编写一个爬虫,Scrapy是一个非常不错的选择。

安装Scrapy

Scrapy可以通过pip安装,我们只需要在终端中输入以下命令:

pip install scrapy

安装完成后,可以在终端中输入以下命令来检查Scrapy是否已经成功安装:

scrapy version

输出的版本号即为已经安装的Scrapy的版本。

创建一个爬虫

在一般情况下,创建一个爬虫需要以下步骤:

  1. 创建一个新的Scrapy项目;
  2. 定义要爬取的网站;
  3. 定义如何从每个页面中提取数据;
  4. 定义如何跟进链接。

我们可以通过运行以下命令来创建一个新的Scrapy项目:

scrapy startproject myproject

这会在当前目录下创建一个名为myproject的文件夹,其中包含了Scrapy的一些默认文件结构。

接下来,我们可以创建一个爬虫:

cd myproject
scrapy genspider example example.com

这个命令将会在spiders文件夹下面创建一个名为example的爬虫,并且爬虫的起始地址为example.com。

编写爬虫规则

在创建一个爬虫之后,我们需要定义如何访问网站以及如何提取其中的数据。

这需要在spider文件中定义,例如我们来看一下如何编写一个简单的爬虫,从quotes.toscrape.com中提取名言警句:

import scrapy

class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'http://quotes.toscrape.com/page/1/',
    ]

    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').get(),
                'author': quote.css('span small::text').get(),
                'tags': quote.css('div.tags a.tag::text').getall(),
            }

        next_page = response.css('li.next a::attr(href)').get()
        if next_page is not None:
            yield response.follow(next_page, self.parse)

在这个例子中,我们定义了一个叫做QuotesSpider的爬虫,它的起始地址为http://quotes.toscrape.com/page/1/。在每个页面中,我们通过CSS选择器来提取名言、作者和标签,然后通过yield关键字返回数据。最后,我们通过CSS选择器来寻找下一页的链接,如果找到则继续访问。

运行爬虫

在我们定义好爬虫规则之后,我们可以通过以下命令来运行爬虫:

scrapy crawl quotes

其中,quotes是我们之前定义的爬虫的名字。Scrapy将会按照我们定义的规则开始执行,并且将提取到的数据输出到控制台。

总结

Scrapy是一个非常强大的Python框架,它可以让我们轻松地从网站中提取数据。需要注意的是,爬虫的行为受到法律和道德的限制,我们应该在使用爬虫的过程中遵守相关的规定。