为什么需要配置文件
- 配置文件存放一些公共的变量(比如数据库地址,账号密码等)
- 一般用全大写字母命名变量名
在spider中,setting能够通过self.setting的方式访问到:
class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = ['http://example.com']
def parse(self,response):
print("existing settings:%s" % self.settings.attributtes.keys())
在pipeline中使用setting所设置的内容
class MyspiderPipeline(object):
def open_spider(self,spider):
print(spider.settings.get("BOT_NAME",None))
print(spider.settings["BOT_NAME"]
import json
class JsonWriterPipeline(object):
#在爬虫开启的时候执行,仅执行一次
def open_spider(self,spider):
self.file = open(spider.settings.get("SAVE_FILE","./temp.json"),"w")
#在爬虫关闭的时候执行,仅执行一次
def close_spider(self,spider):
self.file.close()
#不return的情况下,另外一个权重低的pipeline就不会获取到该item
def process_item(self,item,spider):
line = json.dumps(dict(item))+"\n"
self.file.write(line)
return item