📅  最后修改于: 2023-12-03 14:49:46.435000             🧑  作者: Mango
Scrapy 是一个用 Python 编写的开源网络爬虫框架,可用于抓取网站并从中提取结构化的数据。本文将介绍如何使用 Scrapy 进行数据收集。
在运行 Scrapy 之前,您需要确保已经安装了 Python3 和 Scrapy 。您可以通过以下命令安装 Scrapy:
pip3 install scrapy
使用 Scrapy 可以方便快速地创建爬虫项目。在这里我们使用 scrapy startproject
命令创建一个新项目:
scrapy startproject myproject
运行该命令后,它会创建一个包含 Scrapy 项目的目录结构,如下所示:
myproject/
scrapy.cfg
myproject/
__init__.py
items.py
middlewares.py
pipelines.py
settings.py
spiders/
__init__.py
这些文件的作用如下:
编写爬虫的第一步是选择要抓取的网站。在本例中,我们将使用 Quotes to Scrape 网站。我们要试图从该站点中收集书籍的名言警句。
首先,我们需要创建一个 Spider 类,并定义要爬取的 URL 和如何解析其响应的方法。在本例中,我们将使用 Python 的 XPath 解析库来提取数据。下面是一个简单的示例:
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
start_urls = [
'http://quotes.toscrape.com/page/1/',
]
def parse(self, response):
for quote in response.xpath('//div[@class="quote"]'):
yield {
'text': quote.xpath('./span[@class="text"]/text()').extract_first(),
'author': quote.xpath('./span/small/text()').extract_first(),
'tags': quote.xpath('./div[@class="tags"]/a[@class="tag"]/text()').extract(),
}
在上面的代码中,我们定义了一个名为 QuotesSpider
的 Spider 类。name
属性用于标识该 Spider。start_urls
属性定义了需要抓取的初始 URL 列表,我们将从第一页开始抓取。
在 parse
方法中,我们遍历每个引用并使用 XPath 表达式从中提取数据。最后我们将提取到的数据封装为 Python 字典,并使用 yield
关键字返回。这是 Scrapy 异步方式运行的重要机制。
我们已经编写了爬虫,现在可以使用 Scrapy 从命令行运行它了。进入项目目录并执行以下命令:
scrapy crawl quotes
其中,quotes
是我们在 Spider 类中定义的 name 属性。
爬虫将抓取 http://quotes.toscrape.com/page/1/
开始的所有页面并将提取到的数据打印到控制台。
如果要将提取的数据保存到文件中,可以使用以下命令:
scrapy crawl quotes -o quotes.json
这将将提取的数据保存到名为 quotes.json
的文件中。
以上是使用 Scrapy 进行数据收集的简单示例。Scrapy 还有许多其他功能,例如管道、中间件等,可以帮助您更好地管理爬取的数据。详细文档请参阅 Scrapy 文档。