为所有scrapy Spider编写函数

为所有scrapy Spider编写函数,scrapy,scrapy-spider,Scrapy,Scrapy Spider,所以我正在尝试编写可以从所有scrapy Spider调用的函数。 在我的项目中是否有一个地方可以定义这些函数,或者需要在每个spider中导入它们 谢谢你不能在python中隐式导入代码(至少在没有破解的情况下),毕竟显式比隐式好——所以这不是一个好主意 然而,在scrapy中,使用具有通用函数和方法的基本Spider类是非常常见的 假设您有以下树: ├── myproject │   ├── __init__.py │   ├── spiders │   │   ├── __init__.p

所以我正在尝试编写可以从所有scrapy Spider调用的函数。 在我的项目中是否有一个地方可以定义这些函数,或者需要在每个spider中导入它们


谢谢

你不能在python中隐式导入代码(至少在没有破解的情况下),毕竟显式比隐式好——所以这不是一个好主意

然而,在scrapy中,使用具有通用函数和方法的基本Spider类是非常常见的

假设您有以下树:

├── myproject
│   ├── __init__.py
│   ├── spiders
│   │   ├── __init__.py
│   │   ├── spider1.py
│   │   ├── spider2.py
├── scrapy.cfg
我们可以在
spider/\uuuu init\uuuuuuy.py
中创建一个基础spider:

class BaseSpider(Spider):
    def common_parse(self, response):
        # do something     
并从你的蜘蛛身上继承:

from myproject.spiders import BaseSpider
class Spider1(BaseSpider):
    def parse(self, response):
        # use common methods!
        if 'indicator' in response.body:
            self.common_parse(response)

谢谢@Granitosaurus,但我在尝试此操作时遇到一个错误:
ImportError:在使用您显示的文件夹结构名称时无法导入name BaseSpider
。尝试替换
myproject
,当我使用scrapy.spider导入BaseSpider的
时,我能够运行spider,但它找不到函数。有没有关于我可能在哪里出错的建议?@Casper你确定你的树结构是正确的吗?您可能需要安装自己的包,或者使用模块所在的位置更新PathnPath,以便python能够实际找到导入。类似的问题:原来我没有使用正确的
\uuuu init\uuuuu.py
。谢谢你的解释!