【爬虫】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)
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号