问题
我需要将位于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'的模块
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)
你有解决方案吗?
我仍然在寻找一个解决方案,并不断更新这篇文章,因为我去...直到它的解决。请张贴你如何解决这个问题,如果你有。
谢谢你。
1条答案
按热度按时间brgchamk1#
在
alibabaPage.py
中,您可以执行此操作以导入Scrapy项目文件夹之外类这会将类从
title_collection.py
导入alibabaPage.py