在Python scrappy中,对于多个项目,如何将类方法从一个项目导入到另一个项目中?

tsm1rwdh  于 2022-12-21  发布在  Python
关注(0)|答案(1)|浏览(214)

问题

我需要将位于scrapy项目#1中的函数/方法导入scrapy项目#2 * 中的spider,并在项目#2 * 的其中一个spider中使用它。

目录结构

对于初学者,下面是我的目录结构(假设这些都在一个根目录下):

/importables    # scrapy project #1 
    /importables
        /spiders
            title_collection.py    # take class functions defined from here

/alibaba        # scrapy project #2
    /alibaba
        /spiders
            alibabaPage.py         # use them here

我想要什么
如上所示,我正在努力让scrappy:
1.运行alibabaPage.py
1.在title_collection.py中,从名为TitleCollectionSpider的文件中的类导入名为saveTitleInTitlesCollection的类方法
1.我想在alibabaPage.py spider中调用的函数内部使用saveTitleInTitlesCollection

怎么样...

下面是我目前为止在alibabaPage.py的顶部所做的工作:

  • from importables.importables.spiders import saveTitleInTitlesCollection
  • 否。失败,错误为builtins.ModuleNotFoundError: No module named 'importables'
  • 怎么可能?我从this answer那里得到的答案。
  • 然后,我做了这个...
  • 没有,失败了,我得到了与第一次尝试相同的错误。取自this answer
  • 重新阅读答案#1链接中的帖子,我意识到这个家伙把两个文件放在同一个目录中,所以,我试着这样做(复制title_collection.py并像这样把它放在:
/alibaba        # scrapy project #2
    /alibaba
        /spiders
            alibabaPage.py         # use them here
            title_collection.py    # added this
  • 好吧,看起来是成功了,但最后还是失败了。这没有出错...
from alibaba.spiders.title_collection import TitleCollectionSpiderAlibaba

这让我认为一切都正常。我添加了一个名为testForImport的测试函数,并尝试导入它,最终得到错误:builtins.ModuleNotFoundError: No module named 'alibaba.spiders.title_collection.testForImport'; 'alibaba.spiders.title_collection' is not a package

  • 不幸的是,这实际上并没有达到导入我要使用的名为saveTitleInTitlesCollection的类方法的目标。
  • 我有许多零碎的项目,并希望真的只有一个项目的蜘蛛**,我可以只是导入到每一个其他项目轻松**。
  • 这不是解决方案,所以,寻找一个真正的解决方案,从一个零碎的项目导入一堆类方法到许多继续... * 这甚至可以做到我想知道... *
  • 等待,这实际上没有工作毕竟因为当内置. ModuleNotFoundError:没有名为'ticky.com'的模块
  1. from alibaba.spiders.title_collection import testForImport
  • 不,这个也失败了。

但是,这一次它给了我稍微不同的错误...

builtins.ImportError: 
cannot import name 'testForImport' from 'alibaba.spiders.title_collection' 
(C:\Users\User\\scrapy-webscrapers\alibaba\alibaba\spiders\title_collection.py)

你有解决方案吗?

我仍然在寻找一个解决方案,并不断更新这篇文章,因为我去...直到它的解决。请张贴你如何解决这个问题,如果你有。
谢谢你。

brgchamk

brgchamk1#

alibabaPage.py中,您可以执行此操作以导入Scrapy项目文件夹之外类

import os, sys
sys.path.append(os.path.join(os.path.abspath('../')))

from importables.importables.spiders.title_collection import TitleCollectionSpider

这会将类从title_collection.py导入alibabaPage.py

相关问题