def fetch(level=1, data=None, user='******', passwd=''): def func(data, level): """ :param data: :param level: 0:国家;1:城市;2:商店列表 """ if level == 0: # 商店 return [{'func': None, 'data': s} for s in fetch_stores(data)] else: return [] # Walk from the root node, where level == 1. if data is None: data = {'url': 'http://cdn.lanvin.com/xml/footer/en/store-locator.xml', 'brand_id': 10212, 'brandname_e': u'Lanvin', 'brandname_c': u'浪凡'} global db db = cm.StoresDb() db.connect_db(user=user, passwd=passwd) db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', data['brand_id'])) results = cm.walk_tree({'func': lambda data: func(data, 0), 'data': data}) db.disconnect_db() gs.commit_maps(1) return results
def fetch(level=1, data=None, user='******', passwd=''): def func(data, level): """ :param data: :param level: 0:国家;1:城市;2:商店列表 """ if level == 0: # 商店 return [{'func': None, 'data': s} for s in fetch_stores(data)] else: return [] # Walk from the root node, where level == 1. if data is None: data = { 'url': 'http://cdn.lanvin.com/xml/footer/en/store-locator.xml', 'brand_id': 10212, 'brandname_e': u'Lanvin', 'brandname_c': u'浪凡' } global db db = cm.StoresDb() db.connect_db(user=user, passwd=passwd) db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', data['brand_id'])) results = cm.walk_tree({'func': lambda data: func(data, 0), 'data': data}) db.disconnect_db() gs.commit_maps(1) return results
def fetch(level=1, data=None, user='******', passwd=''): def func(data, level): """ :param data: :param level: 0:洲;1:商店列表;2:具体商店 """ if level == 0: # 洲 return [{'func': lambda data: func(data, 1), 'data': c} for c in get_continents(data)] elif level == 1: # 商店列表 store_list = get_store_list(data) return [{'func': lambda data: func(data, 2), 'data': s} for s in store_list] elif level == 2: # 具体商店信息 store = get_store_details(data) return [{'func': None, 'data': store}] else: return [] global db db = cm.StoresDb() db.connect_db(user=user, passwd=passwd) db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', brand_id)) # Walk from the root node, where level == 1. if data is None: data = {'url': url} results = cm.walk_tree({'func': lambda data: func(data, 0), 'data': data}) db.disconnect_db() for i in xrange(4): gs.commit_maps(i) return results
def fetch(level=1, data=None, user='******', passwd=''): db = cm.StoresDb() db.connect_db(user=user, passwd=passwd) db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', brand_id)) try: html = cm.get_data(url) except Exception: print 'Error occured: %s' % url dump_data = { 'level': 1, 'time': cm.format_time(), 'data': { 'url': url }, 'brand_id': brand_id } cm.dump(dump_data) return [] js = json.loads(html) store_list = [] for s in js['data']['list']: entry = cm.init_store_entry(brand_id, brandname_e, brandname_c) cm.update_entry( entry, { cm.lat: string.atof(s['geo']['lat']), cm.lng: string.atof(s['geo']['lng']) }) entry[cm.name_e] = s['contact']['title'] entry[cm.addr_e] = cm.reformat_addr(s['contact']['address']) entry[cm.tel] = s['contact']['phone'] entry[cm.fax] = s['contact']['fax'] entry[cm.hours] = cm.reformat_addr(s['contact']['hours']) entry[cm.store_type] = s['contact']['selling'] entry[cm.url] = host + s['link'] gs.update_city_map(s['city'], s['country'], s['continent']) cm.update_entry( entry, { cm.continent_e: s['continent'], cm.country_e: s['country'], cm.city_e: s['city'] }) gs.field_sense(entry) print '(%s / %d) Found store: %s, %s (%s, %s)' % ( brandname_e, brand_id, entry[cm.name_e], entry[cm.addr_e], entry[cm.country_e], entry[cm.continent_e]) db.insert_record(entry, 'stores') store_list.append(entry) db.disconnect_db() gs.commit_maps(1) gs.commit_maps(3) return store_list
def fetch(level=1, data=None, user='******', passwd=''): def func(data, level): """ :param data: :param level: 0:国家;1:城市;2:商店列表 """ if level == 0: # 洲列表 return [{ 'func': lambda data: func(data, level + 1), 'data': s } for s in fetch_continents(data)] if level == 1: # 国家列表 return [{ 'func': lambda data: func(data, level + 1), 'data': s } for s in fetch_countries(data)] if level == 2: # 城市列表 return [{ 'func': lambda data: func(data, level + 1), 'data': s } for s in fetch_cities(data)] if level == 3: # 商店 return [{'func': None, 'data': s} for s in fetch_stores(data)] else: return [] # Walk from the root node, where level == 1. if data is None: data = { 'url': 'http://www.lacoste.com/includes/api/stores.api.php', 'brand_id': 10204, 'brandname_e': u'LACOSTE', 'brandname_c': u'鳄鱼' } global db db = cm.StoresDb() db.connect_db(user=user, passwd=passwd) db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', data['brand_id'])) results = cm.walk_tree({'func': lambda data: func(data, 0), 'data': data}) db.disconnect_db() gs.commit_maps(1) return results
def fetch(user='******', passwd=''): global db db = cm.StoresDb() db.connect_db(user=user, passwd=passwd) db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', brand_id)) # Walk from the root node, where level == 1. results = fetch_stores(None, 0, None) db.disconnect_db() for i in xrange(4): gs.commit_maps(i) return results
def fetch(level=1, data=None, user='******', passwd=''): db = cm.StoresDb() db.connect_db(user=user, passwd=passwd) db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', brand_id)) try: html = cm.get_data(url) except Exception: print 'Error occured: %s' % url dump_data = {'level': 1, 'time': cm.format_time(), 'data': {'url': url}, 'brand_id': brand_id} cm.dump(dump_data) return [] js = json.loads(html) store_list = [] for s in js['data']['list']: entry = cm.init_store_entry(brand_id, brandname_e, brandname_c) cm.update_entry(entry, {cm.lat: string.atof(s['geo']['lat']), cm.lng: string.atof(s['geo']['lng'])}) entry[cm.name_e] = s['contact']['title'] entry[cm.addr_e] = cm.reformat_addr(s['contact']['address']) entry[cm.tel] = s['contact']['phone'] entry[cm.fax] = s['contact']['fax'] entry[cm.hours] = cm.reformat_addr(s['contact']['hours']) entry[cm.store_type]=s['contact']['selling'] entry[cm.url]=host+s['link'] gs.update_city_map(s['city'], s['country'], s['continent']) cm.update_entry(entry,{cm.continent_e:s['continent'], cm.country_e:s['country'], cm.city_e:s['city']}) gs.field_sense(entry) print '(%s / %d) Found store: %s, %s (%s, %s)' % ( brandname_e, brand_id, entry[cm.name_e], entry[cm.addr_e], entry[cm.country_e], entry[cm.continent_e]) db.insert_record(entry, 'stores') store_list.append(entry) db.disconnect_db() gs.commit_maps(1) gs.commit_maps(3) return store_list
def fetch(level=1, data=None, user='******', passwd=''): def func(data, level): """ :param data: :param level: 0:洲;1:商店列表;2:具体商店 """ if level == 0: # 洲 return [{ 'func': lambda data: func(data, 1), 'data': c } for c in get_continents(data)] elif level == 1: # 商店列表 store_list = get_store_list(data) return [{ 'func': lambda data: func(data, 2), 'data': s } for s in store_list] elif level == 2: # 具体商店信息 store = get_store_details(data) return [{'func': None, 'data': store}] else: return [] global db db = cm.StoresDb() db.connect_db(user=user, passwd=passwd) db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', brand_id)) # Walk from the root node, where level == 1. if data is None: data = {'url': url} results = cm.walk_tree({'func': lambda data: func(data, 0), 'data': data}) db.disconnect_db() for i in xrange(4): gs.commit_maps(i) return results
def fetch(level=1, data=None, user='******', passwd=''): def func(data, level): """ :param data: :param level: 0:国家;1:城市;2:商店列表 """ if level == 0: # 洲列表 return [{'func': lambda data: func(data, level + 1), 'data': s} for s in fetch_continents(data)] if level == 1: # 国家列表 return [{'func': lambda data: func(data, level + 1), 'data': s} for s in fetch_countries(data)] if level == 2: # 城市列表 return [{'func': lambda data: func(data, level + 1), 'data': s} for s in fetch_cities(data)] if level == 3: # 商店 return [{'func': None, 'data': s} for s in fetch_stores(data)] else: return [] # Walk from the root node, where level == 1. if data is None: data = {'url': 'http://www.lacoste.com/includes/api/stores.api.php', 'brand_id': 10204, 'brandname_e': u'LACOSTE', 'brandname_c': u'鳄鱼'} global db db = cm.StoresDb() db.connect_db(user=user, passwd=passwd) db.execute(u'DELETE FROM %s WHERE brand_id=%d' % ('stores', data['brand_id'])) results = cm.walk_tree({'func': lambda data: func(data, 0), 'data': data}) db.disconnect_db() gs.commit_maps(1) return results