def get_geoconv(self, location): queryStr = '/geoconv/v1/?coords=%s&from=1&to=5&output=json&ak=%s' % ( location, self.__ak) encodedStr = parse.quote(queryStr, safe="/:=&?#+!$,;'@()*[]") rawStr = encodedStr + self.__sk # 计算sn sn = (hashlib.md5(parse.quote_plus(rawStr).encode("utf8")).hexdigest()) url = parse.quote("http://api.map.baidu.com" + queryStr + "&sn=" + sn, safe="/:=&?#+!$,;'@()*[]") data = json.loads(Utils.http_url(url).decode()) if 'result' in data: # print('%s:%s' % ('处理经纬度:', location)) return data['result'][0] return None
def __get_place(self, region, station, tag, path): res = Utils.http_url(self.get_place(station, region, tag)) data = json.loads(res.decode()) if 'results' in data and len(data['results']) > 0: print(station + '|' + str(len(data['results']))) Utils.write_csv('statistics.csv', [station, str(len(data['results']))], 'a+') if not os.path.exists(path): os.mkdir(path) Utils.write_file( path + '/' + station + '.txt', json.dumps(data['results'], ensure_ascii=False, indent=4), 'a+') else: Utils.write_csv('no_place_' + path + '.csv', [station], 'a+')
def get_poi(self, keywords, city, types): res = Utils.http_url(self.get_url(keywords, city, types)) data = json.loads(res.decode()) print(keywords + '|' + data['count']) if data['count'] != '0': params = [] # 打开数据库连接 db = pymysql.connect("localhost", "root", "Aa123456", "chatbot_cn") for poi in data['pois']: params.append([ str(poi['id']), str(poi['name']), str(poi['type']), str(poi['typecode']), str(poi['address']), str(poi['location']), str(poi['pcode']), str(poi['pname']), str(poi['citycode']), str(poi['cityname']), str(poi['adcode']), str(poi['adname']) ]) try: # 使用cursor()方法获取操作游标 cursor = db.cursor() sql = """INSERT INTO lbs_poi (id,name,type,typecode,address,location,pcode,pname,citycode,cityname,adcode,adname) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""" # 执行sql语句 cursor.executemany(sql, params) # 提交到数据库执行 db.commit() cursor.close() except Exception as e: print(e) # 如果发生错误则回滚 # self.db.rollback() # 关闭数据库连接 db.close()