def run(self, args, opts):
self.set_pages(opts.pages)
self.settings.set('GOOD_ONLY', opts.good_only)
self.settings.set('SEE_LZ', opts.see_lz)
if opts.filter:
try:
opts.filter = eval('filter.' + opts.filter)
except:
raise UsageError("Invalid filter function name!")
self.settings.set("FILTER", opts.filter)
cfg = config.config()
if len(args) >= 3:
raise UsageError("Too many arguments!")
self.settings.set('MYSQL_HOST', cfg.config['MYSQL_HOST'])
self.settings.set('MYSQL_USER', cfg.config['MYSQL_USER'])
self.settings.set('MYSQL_PASSWD', cfg.config['MYSQL_PASSWD'])
tbname = cfg.config['DEFAULT_TIEBA']
if len(args) >= 1:
tbname = args[0]
if isinstance(tbname, unicode):
tbname = tbname.encode('utf8')
dbname = None
for key in cfg.config['MYSQL_DBNAME'].keys():
if key.encode('utf8') == tbname:
dbname = cfg.config['MYSQL_DBNAME'][key]
if len(args) >= 2:
dbname = args[1]
cfg.config['MYSQL_DBNAME'][tbname.decode('utf8')] = dbname
if not dbname:
raise UsageError("Please input database name!")
self.settings.set('TIEBA_NAME', tbname, priority='cmdline')
self.settings.set('MYSQL_DBNAME', dbname, priority='cmdline')
config.init_database(cfg.config['MYSQL_HOST'], cfg.config['MYSQL_USER'], cfg.config['MYSQL_PASSWD'], dbname)
log = config.log(tbname, dbname, self.settings['BEGIN_PAGE'], opts.good_only, opts.see_lz)
self.settings.set('SIMPLE_LOG', log)
self.crawler_process.crawl('tieba', **opts.spargs)
self.crawler_process.start()
cfg.save()
评论列表
文章目录