【爬虫】Java爬取KFC全国门店信息
官网地址:
http://www.kfc.com.cn/kfccda/storelist/index.aspx
基础库
<dependencies> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.15</version> </dependency> <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.13.1</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> </dependency> <!-- 连接池https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.14</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies>
翻了一下这个门店获取的页面,城市是固定名称,没有对应CODE
直接作为下面门店翻页的请求参数,接口校验只有Cookie
Cookie的获取从请求门店信息查询就能获取到
代码部分:
1、常量
我怕翻页要用到总记录数,还是放进来了
实际上只要判断接口返回的集合是不是空的就行...
package cn.cloud9.kfc.constant; import java.util.regex.Pattern; public interface KfcConstant { String KFC_STORE_CLIENT_PAGE = "http://www.kfc.com.cn/kfccda/storelist/index.aspx"; String KFC_STORE_PAGING_QUERY_API = "http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname"; Integer PAGE_SIZE = 10; Pattern TOTAL_PATTERN = Pattern.compile("\"rowcount\":[0-9]+"); }
2、PO类
用来返回请求参数和Cookie值,以方便后续递归调用
package cn.cloud9.kfc.po; import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; import java.net.HttpCookie; import java.util.List; /** * @author OnCloud9 * @description * @project RegionReptile-Remaster * @date 2022年07月09日 上午 11:52 */ @Data @EqualsAndHashCode @Builder public class BasicInfo { private List<String> cityNames; private List<HttpCookie> cookies; }
3、数据PO类
package cn.cloud9.kfc.po; import lombok.*; import java.time.LocalDateTime; /** * @author OnCloud9 * @description * @project RegionReptile-Remaster * @date 2022年07月09日 上午 11:47 */ @Data @EqualsAndHashCode public class KfcStorePO { public KfcStorePO() { } private String storeName; private String provinceName; private String cityName; private String pro; private String addressDetail; private LocalDateTime genTime; }
4、封装的方法:
package cn.cloud9.kfc.util; import cn.cloud9.kfc.constant.KfcConstant; import cn.cloud9.kfc.po.BasicInfo; import cn.cloud9.kfc.po.KfcStorePO; import cn.hutool.core.collection.CollUtil; import cn.hutool.db.Db; import cn.hutool.db.Entity; import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import lombok.SneakyThrows; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import java.net.HttpCookie; import java.time.LocalDateTime; import java.util.*; import java.util.regex.Matcher; import java.util.stream.Collectors; /** * @author OnCloud9 * @description * @project RegionReptile-Remaster * @date 2022年07月09日 上午 11:06 */ public class KfcUtil { private static Db db = Db.use(); /** * 获取Cookie和基础请求参数 */ public static BasicInfo getBasicInfo() { final HttpResponse httpResponse = HttpUtil.createGet(KfcConstant.KFC_STORE_CLIENT_PAGE).addHeaders(new HashMap<String, String>() {{ this.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"); this.put("Upgrade-Insecure-Requests", "1"); this.put("Referer", "http://www.kfc.com.cn/kfccda/news.aspx"); this.put("Host", "www.kfc.com.cn"); this.put("Connection", "keep-alive"); this.put("Cache-Control", "max-age=0"); this.put("Accept-Language", "zh-CN,zh;q=0.9"); this.put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"); }}).execute(); final List<HttpCookie> cookies = httpResponse.getCookies(); final String body = httpResponse.body(); final Document document = Jsoup.parse(body); final Elements liList = document.select("ul.shen_info > li"); List<String> cityNames = new ArrayList<>(); liList.forEach(li -> li.select("div.shen_city > a").forEach(aTag -> cityNames.add(aTag.text()))); return BasicInfo.builder().cityNames(cityNames).cookies(cookies).build(); } /** * 请求门店翻页查询接口时携带的基本信息 * @return */ public static Map<String, String> getNewBasicHeader() { return new HashMap<String, String>() {{ this.put("Accept", "application/json, text/javascript, */*; q=0.01"); this.put("Accept-Language", "zh-CN,zh;q=0.9"); this.put("Connection", "keep-alive"); this.put("Content-Length", "55"); this.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); this.put("Host", "www.kfc.com.cn"); this.put("Origin", "http://www.kfc.com.cn"); this.put("Referer", "http://www.kfc.com.cn/kfccda/storelist/index.aspx"); this.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"); this.put("X-Requested-With", "XMLHttpRequest"); }}; } /** * 按城市名和翻页参数获取接口数据 * @param cityName * @param pageIndex * @param pageSize * @param cookies * @return */ public static void getPagingData(String cityName, Integer pageIndex, Integer pageSize, List<HttpCookie> cookies) { final Integer PAGE_SIZE = null == pageSize ? KfcConstant.PAGE_SIZE : pageSize; final Map<String, String> header = getNewBasicHeader(); header.put("Cookie", cookies.stream().map(HttpCookie::toString).collect(Collectors.joining("; "))); final HttpResponse response = HttpUtil.createPost(KfcConstant.KFC_STORE_PAGING_QUERY_API).addHeaders(header).formStr(new HashMap<String, String>() {{ this.put("cname", cityName); this.put("pid", ""); this.put("pageIndex", pageIndex.toString()); this.put("pageSize", PAGE_SIZE.toString()); }}).execute(); final String body = response.body(); final Map<String, Object> map = JSON.parseObject(body, Map.class); final Integer totalCount = getTotalCount(map.get("Table").toString()); final List<KfcStorePO> storeList = JSONObject.parseArray(map.get("Table1").toString(), KfcStorePO.class); boolean isEmpty = CollUtil.isEmpty(storeList); if (isEmpty) return; storeList.forEach(store -> writeStoreInfoToDB(store)); getPagingData(cityName, pageIndex + 1, PAGE_SIZE, cookies); } /** * 初始化建表 */ @SneakyThrows public static void initialTableSpace() { final String SQL = "CREATE TABLE IF NOT EXISTS `kfc-store` (\n" + " `ID` int NOT NULL AUTO_INCREMENT COMMENT 'KFC门店ID',\n" + " `STORE_NAME` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '门店名称',\n" + " `PROVINCE` varchar(12) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '所在省份',\n" + " `CITY` varchar(12) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '所在城市',\n" + " `ADDRESS` varchar(254) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '具体地址',\n" + " `TAG` varchar(48) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '相关特性',\n" + " `GEN_TIME` datetime DEFAULT NULL COMMENT '记录创建时间',\n" + " PRIMARY KEY (`ID`)\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='KFC门店统计表';"; db.execute(SQL, null); } /** * 写db操作 * @param storePO */ @SneakyThrows private static void writeStoreInfoToDB(KfcStorePO storePO) { db.insert(Entity.create("`kfc-store`") .set("STORE_NAME", storePO.getStoreName()) .set("PROVINCE", storePO.getProvinceName()) .set("CITY", storePO.getCityName()) .set("ADDRESS", storePO.getProvinceName() + "|" + storePO.getCityName() + "|" + storePO.getAddressDetail()) .set("TAG", storePO.getPro()) .set("GEN_TIME", LocalDateTime.now()) ); } /** * 获取接口提供的总记录数 * @param jsonData * @return */ private static Integer getTotalCount(String jsonData) { final Matcher matcher = KfcConstant.TOTAL_PATTERN.matcher(jsonData); if (!matcher.find()) return 0; return Integer.valueOf(matcher.group().replace("\"rowcount\":", "").trim()); } }
最后主启动类:
package cn.cloud9.kfc.app; import cn.cloud9.kfc.po.BasicInfo; import java.net.HttpCookie; import java.util.List; import static cn.cloud9.kfc.util.KfcUtil.*; /** * @author OnCloud9 * @description * @project RegionReptile-Remaster * @date 2022年07月09日 上午 11:51 */ public class KfcMainApplication { public static void main(String[] args) { final BasicInfo basicInfo = getBasicInfo(); final List<String> cityNames = basicInfo.getCityNames(); final List<HttpCookie> cookies = basicInfo.getCookies(); cityNames.forEach(cityName -> getPagingData(cityName, 1, null, cookies)); } }
请求参数就是里面的城市,一共608个城市
爬完得到的数据结果,全国一万两千家不到:
SELECT COUNT(1) FROM `kfc-store`; +----------+ | COUNT(1) | +----------+ | 11858 | +----------+ 1 row in set (0.01 sec)
取南昌市的门店信息:
mysql> SELECT * FROM `kfc-store` WHERE `CITY` LIKE '%南昌%'; +------+-----------------------+----------+--------+-----------------------------------------------------------------------------------------------------------+--------------------------------+---------------------+ | ID | STORE_NAME | PROVINCE | CITY | ADDRESS | TAG | GEN_TIME | +------+-----------------------+----------+--------+-----------------------------------------------------------------------------------------------------------+--------------------------------+---------------------+ | 7309 | 蓝天碧水餐厅 | 江西省 | 南昌市 | 江西省|南昌市|青山南路72号1层和地下一层 | Wi-Fi,礼品卡 | 2022-07-09 14:37:38 | | 7310 | 上海南路 | 江西省 | 南昌市 | 江西省|南昌市|青山湖区上海路3号 | Wi-Fi,店内参观,礼品卡 | 2022-07-09 14:37:38 | | 7311 | 大众 | 江西省 | 南昌市 | 江西省|南昌市|叠山路287号大众购物中心一楼 | 点唱机,礼品卡 | 2022-07-09 14:37:38 | | 7312 | 新建欧尚 | 江西省 | 南昌市 | 江西省|南昌市|欧尚百货一楼 | 点唱机,礼品卡 | 2022-07-09 14:37:38 | | 7313 | 南京西路 | 江西省 | 南昌市 | 江西省|南昌市|南京西路277号 | 点唱机,店内参观,礼品卡 | 2022-07-09 14:37:38 | | 7314 | 中山城 | 江西省 | 南昌市 | 江西省|南昌市|中山路177号 | 点唱机,礼品卡 | 2022-07-09 14:37:39 | | 7315 | 玉河 | 江西省 | 南昌市 | 江西省|南昌市|解放西路81-83号印象汇一楼 | 店内参观,礼品卡 | 2022-07-09 14:37:39 | | 7316 | 站前广场 | 江西省 | 南昌市 | 江西省|南昌市|洛阳路70号1-2层 | Wi-Fi,点唱机,礼品卡 | 2022-07-09 14:37:39 | | 7317 | 莲塘 | 江西省 | 南昌市 | 江西省|南昌市|南昌县莲塘镇五一路308号1-2层 | Wi-Fi,礼品卡 | 2022-07-09 14:37:39 | | 7318 | 新洪大 | 江西省 | 南昌市 | 江西省|南昌市|洪城路588号1-2层 | 点唱机,礼品卡 | 2022-07-09 14:37:39 | | 7319 | 新八一 | 江西省 | 南昌市 | 江西省|南昌市|东湖区中山路一号百货大楼一至二层 | 点唱机,礼品卡 | 2022-07-09 14:37:39 | | 7320 | 经开 | 江西省 | 南昌市 | 江西省|南昌市|经济技术开发区榴云路与枫林大道交汇处 | Wi-Fi,点唱机,礼品卡 | 2022-07-09 14:37:39 | | 7321 | 城南路 | 江西省 | 南昌市 | 江西省|南昌市|莲塘城南路贵都国际花城大润发超一楼 | 点唱机,店内参观,礼品卡 | 2022-07-09 14:37:39 | | 7322 | 青云谱 | 江西省 | 南昌市 | 江西省|南昌市|井冈山大道悦达-家乐福国际购物广场一楼 | Wi-Fi,店内参观,礼品卡 | 2022-07-09 14:37:39 | | 7323 | 会展路 | 江西省 | 南昌市 | 江西省|南昌市|红谷滩万达广场2楼肯德基门店 | Wi-Fi,点唱机,店内参观,礼品卡 | 2022-07-09 14:37:39 | | 7324 | 新百花洲 | 江西省 | 南昌市 | 江西省|南昌市|中山路以南、西湖路以东华润万家商场一层、二层 | Wi-Fi,点唱机,店内参观,礼品卡 | 2022-07-09 14:37:39 | | 7325 | 梦时代 | 江西省 | 南昌市 | 江西省|南昌市|北京东路308号恒茂梦时代国际广场三号楼一层 | Wi-Fi,点唱机,店内参观,礼品卡 | 2022-07-09 14:37:39 | | 7326 | 进贤天虹 | 江西省 | 南昌市 | 江西省|南昌市|进贤民和镇胜利南路天集商业广场天虹商场一、二楼 | Wi-Fi,店内参观,礼品卡 | 2022-07-09 14:37:40 | | 7327 | 南昌高铁餐厅 | 江西省 | 南昌市 | 江西省|南昌市|红谷滩新区九龙湖南昌西站进站内场候车厅肯德基 | Wi-Fi,点唱机,礼品卡 | 2022-07-09 14:37:40 | | 7328 | 广北 | 江西省 | 南昌市 | 江西省|南昌市|八一广场万达购物广场地上一层 | Wi-Fi,礼品卡 | 2022-07-09 14:37:40 | | 7329 | 洪城大厦 | 江西省 | 南昌市 | 江西省|南昌市|西湖区北京西路156号一层洪城大厦肯德基 | Wi-Fi,点唱机,礼品卡 | 2022-07-09 14:37:40 | | 7330 | 新上海路 | 江西省 | 南昌市 | 江西省|南昌市|上海北路230号肯德基 | Wi-Fi,礼品卡 | 2022-07-09 14:37:40 | | 7331 | 金沙大道 | 江西省 | 南昌市 | 江西省|南昌市|金沙大道以东、雄西河以西天虹商场1-2层 | 点唱机,礼品卡 | 2022-07-09 14:37:40 | | 7332 | 火炬大街DT | 江西省 | 南昌市 | 江西省|南昌市|高新技术开发区火炬大街高新六路116号 | 点唱机,店内参观,礼品卡 | 2022-07-09 14:37:40 | | 7333 | 九龙湖万达 | 江西省 | 南昌市 | 江西省|南昌市|九龙大道九龙湖融创茂二层 | Wi-Fi,点唱机 | 2022-07-09 14:37:40 | | 7334 | 高铁到达层 | 江西省 | 南昌市 | 江西省|南昌市|南昌西到达层北广场负二楼近2号线地铁进站口 | Wi-Fi,点唱机,店内参观 | 2022-07-09 14:37:40 | | 7335 | 新力都荟 | 江西省 | 南昌市 | 江西省|南昌市|雄西河以西金沙大道新力都荟 | Wi-Fi,店内参观 | 2022-07-09 14:37:40 | | 7336 | 吾悦广场 | 江西省 | 南昌市 | 江西省|南昌市|艾溪湖北路77号吾悦广场1楼 | 点唱机 | 2022-07-09 14:37:40 | | 7337 | 西湖万达 | 江西省 | 南昌市 | 江西省|南昌市|云锦路368号万达广场一号门一楼肯德基 | Wi-Fi,点唱机 | 2022-07-09 14:37:40 | | 7338 | 万象中心 | 江西省 | 南昌市 | 江西省|南昌市|新建县长堎镇解放路西侧、文教路南侧A、B地块礼步湖大道288号世纪万象广场 | Wi-Fi | 2022-07-09 14:37:41 | | 7339 | 杉杉奥莱 | 江西省 | 南昌市 | 江西省|南昌市|红谷滩新区九龙大道与生米大道交界处杉杉奥特莱斯广场 | Wi-Fi,点唱机 | 2022-07-09 14:37:41 | | 7340 | 新建首创 | 江西省 | 南昌市 | 江西省|南昌市|明矾路399号首创奥特莱斯F1层 | Wi-Fi,点唱机,店内参观,精选店 | 2022-07-09 14:37:41 | | 7341 | 桃苑 | 江西省 | 南昌市 | 江西省|南昌市|西湖区桃苑大街288号汇海国际广场一楼 | Wi-Fi,点唱机,精选店 | 2022-07-09 14:37:41 | | 7342 | 紫阳大道 | 江西省 | 南昌市 | 江西省|南昌市|高新区紫阳大道1216号,江西科技学院瑶湖校区正对面 | Wi-Fi,点唱机,店内参观 | 2022-07-09 14:37:41 | | 7343 | 绿地中心 | 江西省 | 南昌市 | 江西省|南昌市|东湖区红谷滩中心区红谷中大道998号绿地中央广场D2商业一层 | Wi-Fi,点唱机,店内参观 | 2022-07-09 14:37:41 | | 7344 | 新建吾悦肯德基 | 江西省 | 南昌市 | 江西省|南昌市|新建区新城吾悦广场1030-1031号商铺 | Wi-Fi,点唱机,店内参观 | 2022-07-09 14:37:41 | | 7345 | 乐盈广场 | 江西省 | 南昌市 | 江西省|南昌市|经济技术开发区枫林西大街以北、桂苑大道以西、江西科技师范大学以东经开盈石广场一层18779282084 | Wi-Fi,点唱机 | 2022-07-09 14:37:41 | | 7346 | 青山湖万达 | 江西省 | 南昌市 | 江西省|南昌市|青山湖区京东南大道1666号的万达广场1012A、1012B号商铺 | Wi-Fi | 2022-07-09 14:37:41 | | 7347 | 欢乐大世界餐厅 | 江西省 | 南昌市 | 江西省|南昌市|新建区幸福北路欢乐大世界289号A411-A412壹层 | Wi-Fi,点唱机 | 2022-07-09 14:37:41 | | 7348 | 悦佳 | 江西省 | 南昌市 | 江西省|南昌市|澄湖北大道以北莲西大道以东煌盛悦佳广场一层112至120商铺 | Wi-Fi,点唱机 | 2022-07-09 14:37:41 | | 7349 | 澜湖广场餐厅 | 江西省 | 南昌市 | 江西省|南昌市|洪都大道以东、青山之路以西、青山南路以北澜湖花园12#商业楼一层 | Wi-Fi | 2022-07-09 14:37:41 | | 7350 | 南昌火车站候车层 | 江西省 | 南昌市 | 江西省|南昌市|市辖区南昌站商业夹层JC-08商业点位 | Wi-Fi,点唱机 | 2022-07-09 14:37:41 | | 7351 | 艾溪湖公园 | 江西省 | 南昌市 | 江西省|南昌市|高新区艾溪湖公园内区溪湖一路以北片区一层 | Wi-Fi,点唱机 | 2022-07-09 14:37:42 | | 7352 | 九洲天虹 | 江西省 | 南昌市 | 江西省|南昌市|九洲天虹广场购物中心一层1018号铺 | Wi-Fi,点唱机 | 2022-07-09 14:37:42 | | 7353 | 王府井 | 江西省 | 南昌市 | 江西省|南昌市|洪城路160号正盛太古港7#楼一层 | Wi-Fi,点唱机 | 2022-07-09 14:37:42 | | 7354 | 九洲天虹甜品站 | 江西省 | 南昌市 | 江西省|南昌市|九洲天虹广场购物中心一层1026号铺 | Wi-Fi | 2022-07-09 14:37:42 | | 7355 | 阳光里 | 江西省 | 南昌市 | 江西省|南昌市|市辖区经济技术开发区广兰大道888号“南天阳光小区永辉生活广场”一层 | Wi-Fi | 2022-07-09 14:37:42 | | 7356 | 瑶湖公园 | 江西省 | 南昌市 | 江西省|南昌市|高新区瑶湖郊野森林公园内瑶湖书院旁一层 | Wi-Fi,点唱机,店内参观 | 2022-07-09 14:37:42 | | 7357 | 天空之城 | 江西省 | 南昌市 | 江西省|南昌市|迎宾南大道与汽车大道万科天空之城2049商业一层 | NULL | 2022-07-09 14:37:42 | | 7358 | 进贤服务区(西)餐厅 | 江西省 | 南昌市 | 江西省|南昌市|福银高速进贤服务区西侧 | NULL | 2022-07-09 14:37:42 | | 7359 | 瑶湖公园 | 江西省 | 南昌市 | 江西省|南昌市|高新区瑶湖郊野森林公园内瑶湖书院旁一层 | Wi-Fi,点唱机,店内参观 | 2022-07-09 14:37:42 | | 7360 | 天健园餐厅 | 江西省 | 南昌市 | 江西省|南昌市|南昌大学前湖校区天健园食堂一楼 | 点唱机 | 2022-07-09 14:37:42 | | 7361 | 天健园餐厅 | 江西省 | 南昌市 | 江西省|南昌市|南昌大学前湖校区天健园食堂一楼 | 点唱机 | 2022-07-09 14:37:43 | | 7362 | 进贤服务区(东)餐厅 | 江西省 | 南昌市 | 江西省|南昌市|福银高速进贤服务区东侧 | NULL | 2022-07-09 14:37:43 | | 7363 | 进贤服务区(西)餐厅 | 江西省 | 南昌市 | 江西省|南昌市|福银高速进贤服务区西侧 | NULL | 2022-07-09 14:37:43 | | 7364 | 天空之城 | 江西省 | 南昌市 | 江西省|南昌市|迎宾南大道与汽车大道万科天空之城2049商业一层 | NULL | 2022-07-09 14:37:43 | | 7365 | 进贤服务区(东)餐厅 | 江西省 | 南昌市 | 江西省|南昌市|福银高速进贤服务区东侧 | NULL | 2022-07-09 14:37:43 | | 7366 | 阳光里 | 江西省 | 南昌市 | 江西省|南昌市|市辖区经济技术开发区广兰大道888号“南天阳光小区永辉生活广场”一层 | Wi-Fi | 2022-07-09 14:37:43 | | 7367 | 南昌万象汇 | 江西省 | 南昌市 | 江西省|南昌市|华润万象汇负一楼LG07号商铺 | NULL | 2022-07-09 14:37:43 | | 7368 | 南昌万象汇 | 江西省 | 南昌市 | 江西省|南昌市|华润万象汇负一楼LG07号商铺 | NULL | 2022-07-09 14:37:43 | | 7369 | 广南大润发 | 江西省 | 南昌市 | 江西省|南昌市|广场南路大润发 | NULL | 2022-07-09 14:37:43 | | 7370 | 广南大润发 | 江西省 | 南昌市 | 江西省|南昌市|广场南路大润发 | NULL | 2022-07-09 14:37:43 | | 7371 | 时代广场 | 江西省 | 南昌市 | 江西省|南昌市|红谷滩新区凤凰洲地铁万科时代广场一层 | Wi-Fi,点唱机,店内参观,手机点餐 | 2022-07-09 14:37:43 | | 7372 | 时代广场 | 江西省 | 南昌市 | 江西省|南昌市|红谷滩新区凤凰洲地铁万科时代广场一层 | Wi-Fi,点唱机,店内参观,手机点餐 | 2022-07-09 14:37:44 | | 7373 | 昌北机场 | 江西省 | 南昌市 | 江西省|南昌市|新建县昌北国际机场2号航站楼商业区域B-1-C2 | 点唱机,店内参观,手机点餐 | 2022-07-09 14:37:44 | | 7374 | TY临时-武汉肯德基市场 | 江西省 | 南昌市 | 江西省|南昌市|null | 手机点餐 | 2022-07-09 14:37:44 | | 7375 | 南昌高铁到达南 | 江西省 | 南昌市 | 江西省|南昌市|市辖区红谷滩新区九龙湖片区西客站南广场B2层 | 手机点餐 | 2022-07-09 14:37:44 | | 7376 | 经开旭辉 | 江西省 | 南昌市 | 江西省|南昌市|1F-011编号商铺荷华路(富樱路)以东、双港大道以北、海棠北路以南、筠霁路以西旭辉广场一层 | 点唱机,店内参观,手机点餐 | 2022-07-09 14:37:44 | | 7377 | 长胜园餐厅 | 江西省 | 南昌市 | 江西省|南昌市|南昌高新技术产业开发区紫阳大道99号江西师范大学瑶湖校区长胜园1楼东侧店面 | 手机点餐 | 2022-07-09 14:37:44 | | 7378 | 新万寿宫 | 江西省 | 南昌市 | 江西省|南昌市|-1-1;B02-2-1号铺中山路以南、翠花街以西、船山路以北的万寿宫历史文化街区项目B02地块B02 | 手机点餐 | 2022-07-09 14:37:44 | | 7379 | TY临时-武汉肯德基市场 | 江西省 | 南昌市 | 江西省|南昌市|null | 手机点餐 | 2022-07-09 14:37:44 | | 7380 | 经开旭辉 | 江西省 | 南昌市 | 江西省|南昌市|1F-011编号商铺荷华路(富樱路)以东、双港大道以北、海棠北路以南、筠霁路以西旭辉广场一层 | 点唱机,店内参观,手机点餐 | 2022-07-09 14:37:44 | | 7381 | 新万寿宫 | 江西省 | 南昌市 | 江西省|南昌市|-1-1;B02-2-1号铺中山路以南、翠花街以西、船山路以北的万寿宫历史文化街区项目B02地块B02 | 手机点餐 | 2022-07-09 14:37:44 | | 7382 | 长胜园餐厅 | 江西省 | 南昌市 | 江西省|南昌市|南昌高新技术产业开发区紫阳大道99号江西师范大学瑶湖校区长胜园1楼东侧店面 | 手机点餐 | 2022-07-09 14:37:44 | | 7383 | 南昌高铁到达南 | 江西省 | 南昌市 | 江西省|南昌市|市辖区红谷滩新区九龙湖片区西客站南广场B2层 | 手机点餐 | 2022-07-09 14:37:44 | +------+-----------------------+----------+--------+-----------------------------------------------------------------------------------------------------------+--------------------------------+---------------------+ 75 rows in set (0.28 sec)