官网地址:
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)