设计问题:最好 'place' 解析 Items 中的 Scrapy 文本?

Design Question: Best 'place' to parse Scrapy text in Items?

这个问题具体是从architecture/design的角度来看,解析从Scrapy中的响应对象获得的文本的最佳位置在哪里?

上下文:

我想获取该文本字段,对其进行解析,并将其归类为一般组,例如“传球比赛”、“冲球比赛" 等基于某些关键字模式。

我的问题如下:何时何地最好?我是否在 Scrapy 中创建自己的中间件,以便在它到达管道时该项目已经具有类别并因此存储在我的数据库中?或者我只是收集抓取的响应 'raw',直接存储在我的数据库中并在事后 SQL 中进行数据清理,或者甚至通过单独的 python 脚本?

如前所述,作为一个整体的编程新手,所以我不确定从 'design' 的角度来看什么是最好的

如果您在 scrapy 中进行任何抓取,您将不得不考虑要使用哪些项目字段来收集数据。因此,首先要在编写爬虫之前弄清楚这些字段是什么。

我认为您不一定需要自己的中间件,除非您的数据特别需要在请求和响应方面完成工作。中间件主要用于处理请求和响应而不是数据 manipulation/cleaning。即如果您有重复或需要更改响应或添加请求等...

Scrapy 是为数据提取而构建的,并且已经有一种将信息放入类似字典的强大方法 API 称为 ItemsAdapter,它本质上是用于不同存储数据方式的包装器。

在 Scrapy 中还有一些方法可以以小的方式和大的方式清理数据。您可以使用 ItemLoaders,它通过一个可以操作数据或使用管道的小函数来放置您的项目。管道为您处理提取的数据提供了很大的灵活性。

您将不得不考虑数据库设计以及您要使用什么 table,因为最终这就是您放置数据的地方。在 Scrapy 中设置数据库管道非常容易。数据库管道足够灵活,您可以使用 SQL 查询将数据放入任何 table 中。

在这里熟悉 Scrapy 架构可能会帮助您创建流程的心智模型。你可以看到这个here