Scrapy多项目间如何导入其他项目的类方法?
解决Scrapy跨项目导入类方法的问题
需求
在Scrapy项目#2的alibabaPage.py爬虫中,导入项目#1的title_collection.py里TitleCollectionSpider类的saveTitleInTitlesCollection类方法并使用。
目录结构
/importables(项目#1) /importables /spiders title_collection.py /alibaba(项目#2) /alibaba /spiders alibabaPage.py
尝试过的无效方法
- 直接导入报错:
ModuleNotFoundError: No module named 'importables' - 手动添加
sys.path后仍报相同错误 - 将
title_collection.py复制到项目#2的同目录下,导入依然失败
可行解决方案
修改项目#2中的alibabaPage.py,按以下步骤操作:
- 添加系统路径配置,将项目#1的父目录加入
sys.path - 导入目标类
- 在爬虫的
parse方法中实例化类并调用指定方法
完整代码示例:
import sys import os import scrapy # 添加项目#1的父目录到系统路径,确保能找到importables模块 sys.path.append(os.path.join(os.path.abspath('../'))) from importables.importables.spiders.title_collection import TitleCollectionSpider class AlibabaPageSpider(scrapy.Spider): name = 'alibabaPage' # 其他爬虫配置(如start_urls等)... def parse(self, response): # 实例化TitleCollectionSpider类 title_handler = TitleCollectionSpider() # 调用目标类方法,传入所需参数 title_handler.saveTitleInTitlesCollection(your_title_data) # 后续爬虫逻辑...
验证:按上述修改后,可成功调用目标方法。
内容的提问来源于stack exchange,提问作者rom
相关产品推荐
相关产品推荐

