我对Python真的很陌生,并且一直与Scrapy结合使用它来制作一些Web搜寻器。从终端运行Spider时,我可以使用“ -a NAME = VALUE”设置参数,这对于将其定向到不同域特别有用。我正在尝试将“域”参数用作另一个模块中的变量,但被卡住了。这是我要从中导入参数的模块的一部分:
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
或者
variable = __import __ ('MyModule').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类的属性。只有在某处domain
具有Spider
创建实例的情况下,您才能访问。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句