settings
BOT_NAME = 'yangguang' # 项目名
SPIDER_MODULES = ['yangguang.spiders'] # 爬虫位置
NEWSPIDER_MODULE = 'yangguang.spiders' # 新建的爬虫在什么位置
USER_AGENT = “使用的代理”
ROBOTSTXT_OBEY = False #是否遵守robot协议
CONCURRENT_REQUESTS = 32 # 最大并发数
DOWNLOAD_DELAY = 3 #下载延迟
CONCURRENT_REQUESTS_PER_DOMAIN = 16 #每个域名的最大变化请求数
CONCURRENT_REQUESTS_PER_IP = 16 # 每个IP的最大变化请求数
COOKIES_ENABLED = False # cookies是否要开启
TELNETCONSOLE_ENABLED = False # 禁用Telnet控制台(默认启用)
DEFAULT_REQUEST_HEADERS = { #默认请求头
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
'Accept-Language': 'en',
}
SPIDER_MIDDLEWARES = #爬虫中间件
DOWNLOADER_MIDDLEWARES = #下载中间件
EXTENSIONS = #插件
ITEM_PIPELINES = #管道
在settings.py里面可以自定义变量,定义完之后在其他文件导入就可以用了。用import或者用self.settings[‘变量名’]或self.settings.get(“变量名”)。
在pipeline里面用spider代替self也行
pipeline
class JsonWritePipeline(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()
def process_item(self, item, spider):
line = json.dumps(dict(item))+"\n"
self.file.write(line)
return item #不return的情况下,另一个权重较低的pipeline就不会获取到该item