为所有scrapy蜘蛛编写函数

时间:2017-05-26 09:43:46

标签: scrapy scrapy-spider

所以我试图编写可以从所有scrapy蜘蛛中调用的函数。 我的项目中有一个地方可以定义这些函数,还是需要在每个蜘蛛中导入它们?

由于

1 个答案:

答案 0 :(得分:2)

你不能在python中隐式导入代码(至少不是没有黑客攻击),毕竟显式优于隐式 - 所以这不是一个好主意。

然而,在scrapy中,基本的Spider类具有常见的功能和方法是很常见的。

让我们假设你有这棵树:

├── myproject
│   ├── __init__.py
│   ├── spiders
│   │   ├── __init__.py
│   │   ├── spider1.py
│   │   ├── spider2.py
├── scrapy.cfg

我们可以在spiders/__init__.py中创建一个基础蜘蛛:

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)