Scrapy spider显示同一项目中另一个不相关spider的错误

vjhs03f7  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(161)

我试图通过运行scrapy genspider -t crawl newspider "example.com"来创建一个新的spider。这是在我最近创建的spider项目目录C:\Users\donik\bo_gui\gui_project下运行的。结果我得到一个错误消息:

File "C:\Users\donik\bo_gui\gui_project\gui_project\spiders\requisites.py", line 6, in <module>
    from gui_project.gui_project.updated_kw import translated_kw_dicts
ModuleNotFoundError: No module named 'gui_project.gui_project'

此错误消息指的是我以前在www.example.com中创建的另一个名requisites.py为

class RequisitesSpider(CrawlSpider):
    name = 'requisites'

我不明白为什么genspider命令在www.example.com中会被这个旧的spider困扰requisites.py,从而拒绝创建新的spider。requisites.py有这样的import语句,当我运行错误所指向的spider时,这些语句没有显示任何错误,但是当我想创建一个新的spider时,突然找不到gui_project.gui_project模块:

from bs4 import BeautifulSoup
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from langdetect import detect
import re
from gui_project.gui_project.updated_kw import translated_kw_dicts
from urllib.parse import urlparse

如果我注解掉from gui_project.gui_project.updated_kw import translated_kw_dicts并再次运行scrapy genspider -t crawl newspider "example.com",那么我的新spider就成功创建了。当我试图在同一个项目中运行第三个spider时,情况也是如此。它也会因为www.example.com spider中的错误而停止requisites.py,尽管它们没有以任何方式互连,并且每个spider的名称都不相同。cfg和设置文件没有被移动。
知道是什么导致的吗?

2admgd59

2admgd591#

当您尝试创建一个新的spider时,scrapy genspider将检查是否已经存在具有该名称的spider。
为此,使用了SpiderLoader的示例。
SpiderLoader在启动时导入并缓存项目中的所有spider。
由于其中一个导入会导致错误,因此该命令将失败。

3xiyfsfu

3xiyfsfu2#

我也遇到过这种情况,首先,我使用pycahrm,我们知道,pycharm项目有两层,如下图所示。
click here to see it为了方便我们一般把工程的内层设为Source Root,Pycharm可以识别,但是命令行不能识别,所以我们需要这样做,动态修改系统路径,让命令行知道我们有里面那层的工程作为home目录

sys.path.insert(0, "D:\Code\Python\ArticleSpider\ArticleSpider")

相关问题