(Python)从一个模块中的_uinit_uuu导入参数以用于另一个模块?
我对Python真的很陌生,一直在将它与Scrapy结合使用来制作一些网络爬虫。从终端运行spider时,我可以使用“-a NAME=VALUE”设置参数,这对于将其定向到不同的域特别有用。我试图在另一个模块中使用“domain”参数作为变量,但被卡住了。下面是我试图从中导入参数的模块的一部分:(Python)从一个模块中的_uinit_uuu导入参数以用于另一个模块?,python,Python,我对Python真的很陌生,一直在将它与Scrapy结合使用来制作一些网络爬虫。从终端运行spider时,我可以使用“-a NAME=VALUE”设置参数,这对于将其定向到不同的域特别有用。我试图在另一个模块中使用“domain”参数作为变量,但被卡住了。下面是我试图从中导入参数的模块的一部分: class Spider(spiders.CrawlSpider): name = 'changelog' rules = (spiders.Rule(SgmlLinkExtractor
class Spider(spiders.CrawlSpider):
name = 'changelog'
rules = (spiders.Rule(SgmlLinkExtractor(), callback='parse_item', follow=True),)
def __init__(self, domain='WHAT_IM_TRYING_TO_FIND', *args, **kwargs):
super(Spider, self).__init__(*args, **kwargs)
self.domain = domain
self.allowed_domains = [domain]
self.start_urls = [
'http://%s/' % domain,
'http://%s/index.html' % domain,
'http://%s/index.php' % domain,
]
在单独的模块中,尝试以下操作
from MyModule import Spider
variable = Spider.domain
或
给我
Class 'Spider' has no 'domain' member
任何指导都将不胜感激
Scrapy的文件结构如下所示:
myproject/
__init __.py
items.py
pipelines.py
settings.py
spiders/
__init __.py
spider.py
domain
是Spider实例的属性,而不是Spider类的属性。如果您在某处创建了一个Spider的实例,则只能访问域。域是Spider实例的属性,而不是Spider类的属性。如果您在某处创建了一个Spider的实例,则只能访问域。域是Spider实例的属性,而不是Spider类的属性。如果您在某处创建了一个Spider的实例,则只能访问域。域是Spider实例的属性,而不是Spider类的属性。如果您在某处创建了一个Spider
实例,则只能访问domain
。尝试访问域的模块是由Spider
触发的,因此它应该能够访问域
属性,我只是不确定如何操作。谢谢@克里斯蒂安:你需要提供更多的细节。当Spider“触发”您的模块时,它是否提供了关于它已经创建的Spider的任何信息?希望我能很好地解释我自己。Scrapy项目具有以下文件结构:编辑:添加到原始问题执行spider时,它所刮取的项目将传递到处理它们的方式的pipelines.py
pipelines.py
从models.py
导入类,我想从这里访问域
。基本上,Spider
返回一个项目,该项目通过pipelines.py
,该过程对每个项目重复。试图访问域的模块是由Spider
触发的,因此它应该能够访问域
属性,我只是不确定如何操作。谢谢@克里斯蒂安:你需要提供更多的细节。当Spider“触发”您的模块时,它是否提供了关于它已经创建的Spider的任何信息?希望我能很好地解释我自己。Scrapy项目具有以下文件结构:编辑:添加到原始问题执行spider时,它所刮取的项目将传递到处理它们的方式的pipelines.py
pipelines.py
从models.py
导入类,我想从这里访问域
。基本上,Spider
返回一个项目,该项目通过pipelines.py
,该过程对每个项目重复。试图访问域的模块是由Spider
触发的,因此它应该能够访问域
属性,我只是不确定如何操作。谢谢@克里斯蒂安:你需要提供更多的细节。当Spider“触发”您的模块时,它是否提供了关于它已经创建的Spider的任何信息?希望我能很好地解释我自己。Scrapy项目具有以下文件结构:编辑:添加到原始问题执行spider时,它所刮取的项目将传递到处理它们的方式的pipelines.py
pipelines.py
从models.py
导入类,我想从这里访问域
。基本上,Spider
返回一个项目,该项目通过pipelines.py
,该过程对每个项目重复。试图访问域的模块是由Spider
触发的,因此它应该能够访问域
属性,我只是不确定如何操作。谢谢@克里斯蒂安:你需要提供更多的细节。当Spider“触发”您的模块时,它是否提供了关于它已经创建的Spider的任何信息?希望我能很好地解释我自己。Scrapy项目具有以下文件结构:编辑:添加到原始问题执行spider时,它所刮取的项目将传递到处理它们的方式的pipelines.py
pipelines.py
从models.py
导入类,我想从这里访问域
。基本上,Spider
返回一个项目,该项目通过pipelines.py
传递,该过程对每个项目重复。在该文件结构中,您正试图访问域
?我正试图访问pipelines.py
中的域
,而domain
来自classspider
中的Spider.py
。您看到了吗?这意味着您即使在创建管道时也无法访问spider实例,更不用说在导入pipleine模块时了。您可能需要更深入地钻研Scrapy文档,以了解以什么顺序发生的事情,以及您实际可以/应该在什么时候访问spider对象。好的,这是有意义的。我要做的是在domain
参数之后命名modules.py
在MySQL中创建的表,但看起来我必须找到另一种方法。在该文件结构中,您试图访问domain
的文件是哪个?我试图访问pipelines.py中的domain
,而域
来自内的类蜘蛛
myproject/
__init __.py
items.py
pipelines.py
settings.py
spiders/
__init __.py
spider.py