scrapy - 为所有 scrapy 蜘蛛编写函数

标签 scrapy scrapy-spider

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

谢谢

最佳答案

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

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

假设您有这棵树:

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

我们可以在spiders/__init__.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)

关于scrapy - 为所有 scrapy 蜘蛛编写函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44198404/

相关文章:

python-3.x - Scrapy - 类型错误 : 'Rule' object is not iterable

python - 使用Scrapy爬取本地XML文件-起始URL 本地文件地址

python - scrapy处于conda虚拟环境时如何在pycharm中调试scrapy

python - Scrapy:使用scrapy和xpath时如何同时获取文本和带有<b>标签的文本?

python - 构造Scrapy Request对象时是否可以指定任何方法作为回调?

python - 如何使用Scrapy编码

scrapy - 如何使用 Scrapy 下载图片?

python - 如何使用 python scrapy 爬行网站时消除重复链接?

css - 无法在CSS选择器或XPath表达式中获得响应

python - Scrapy + 飞溅 + ScrapyJS