Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 设计问题:最佳';地点';要分析项目中的碎片文本?_Python_Scrapy_Middleware - Fatal编程技术网

Python 设计问题:最佳';地点';要分析项目中的碎片文本?

Python 设计问题:最佳';地点';要分析项目中的碎片文本?,python,scrapy,middleware,Python,Scrapy,Middleware,从架构/设计的角度来看,这个问题是关于解析从Scrapy中的响应对象获得的文本的最佳位置在哪里的 背景: 我正在学习Python,并从一个流行的NFL足球数据库网站抓取数据开始 我已经获得了所需的所有数据点,并将它们存储在本地数据库(sqlite)中 我正在抓取的一件事是“一场接一场”,它收集每场比赛中发生的事情。有一个描述性文本字段,可能会说“球员XYZ传球给球员ABC”或“球员123将球打到中间” 我想获取该文本字段,对其进行解析,并根据某些关键字模式将其分类为一般组,例如“传球比赛””

从架构/设计的角度来看,这个问题是关于解析从Scrapy中的响应对象获得的文本的最佳位置在哪里的

背景:

  • 我正在学习Python,并从一个流行的NFL足球数据库网站抓取数据开始
  • 我已经获得了所需的所有数据点,并将它们存储在本地数据库(sqlite)中
  • 我正在抓取的一件事是“一场接一场”,它收集每场比赛中发生的事情。有一个描述性文本字段,可能会说“球员XYZ传球给球员ABC”或“球员123将球打到中间
我想获取该文本字段,对其进行解析,并根据某些关键字模式将其分类为一般组,例如“传球比赛””、“快速比赛””等

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


如前所述,作为一个整体,编程是新的,因此我不确定从“设计”的角度看什么是最好的

如果您在scrapy中进行任何刮取,您必须考虑要使用哪些项字段来收集数据。因此,在编写scraper之前,首先要弄清楚这些字段是什么

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

Scrapy是为数据提取而构建的,它已经有了一种健壮的方法,可以将信息放入一个类似于字典的API中,称为ItemsAdapter,它本质上是一个用于不同存储数据方式的包装器

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

您必须考虑数据库设计和要使用的表,因为最终您将在其中放置数据。在Scrapy中设置数据库管道非常容易。数据库管道足够灵活,可以使用SQL查询将数据放入任何需要的表中


熟悉这里的残缺架构可能有助于您创建流程的心智模型。你可以看到这个

非常感谢!这就是我一直在寻找的答案:)