对中国境内所有地区KFC门店基本信息的统计(简略版)

news2025/2/28 6:13:09

在这里插入图片描述
我们要获取每个地区的kfc信息就要先获取中国一共有哪些地区

中国所有城市名称获取

import requests
from lxml import etree

with open(f'./省份.txt', 'w') as fp:
    fp.write('')
with open(f'./城市.txt', 'w') as fp:
    fp.write('')

url1='http://www.kfc.com.cn/kfccda/storelist/index.aspx'#页面网址
city=[]
res1=requests.get(url1).text
tre=etree.HTML(res1)
sheng=tre.xpath('//*[@id="container"]/div[1]/div[2]/div/div[1]/div[1]/div/div[3]/ul/li/strong/text()')
#得到页面源码
n=len(sheng)
for i in range(1,n+1):
    shi=tre.xpath(f'//*[@id="container"]/div[1]/div[2]/div/div[1]/div[1]/div/div[3]/ul/li[{i}]/div/a/text()')
    #使用xpath对信息获取
    for s in shi:
        city.append(sheng[i-1]+'-'+s)
print(city)
for i in city:
    with open(f'./城市.txt', 'a') as fp:
        fp.write(i+'\n')
for i in sheng:
    with open(f'./省份.txt', 'a') as fp:
        fp.write(i+'\n')

现在我们已经有了每个城市的名字我们只需要将他们替换到请求接口的data中即可获取每个地区的kfc门店基本信息

每个地区门店基本信息获取

import shutil
import time
import requests
import os
from multiprocessing.dummy import Pool

def RemoveDir():    #用来删除文件夹中的所有内容
    try:
        shutil.rmtree('./city')#删除文件夹
    except:
        pass
    os.mkdir('./city')#创建文件夹
    amelist = []
    file = open('./省份.txt', "r", encoding="GBK")
    file = file.readlines() #读取所有文件按行
    for line in file:
        line = line.strip('\n')#删除掉line里的\n
        amelist.append(line)#将line添加到列表amelist中
    for i in amelist:
        filepath=f'./city/{i}'
        os.mkdir(filepath)#创建名字为filepath的文件夹




def zhu(name):
    s=str(name).split('-')#将name以-切片

    print(1)
    data={
    'cname': f'{s[1]}',
    'pid': '',
    'pageIndex': '1',
    'pageSize': '900'
    }
    res=requests.post(url,data=data).json()#post方法获取数据url为网址data为负载.json为以json格式获取数据
    print(res)
    if str(res['Table'][0]['rowcount'])!='0':#如果res['Table'][0]['rowcount']==0说明这个城市没有店不在进行下面操作
        fort=[]#保存店铺的名称
        for i in res['Table1']:
            if str(i['addressDetail']) not in fort:#如果当前店铺名称已经保存过说明重复不在进行以下程序
                with open(f'./city/{s[0]}/{s[1]}.txt', 'a+') as fp:
                    print(str(i['storeName'])+'%'+str(i['addressDetail'])+'%'+str(i['pro']))
                    fp.write(str(i['storeName'])+'%'+str(i['addressDetail'])+'%'+str(i['pro'])+'\n')
            fort.append(str(i['addressDetail']))
        with open(f'./city/{s[0]}/{s[1]}.txt', 'a+') as fp:#以a+打开文件追加模式
            fp.write(str(len(fort)))
    time.sleep(0.5)



RemoveDir()
number=[]
url='http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname'
namelist=[]
file = open('./城市.txt', "r", encoding="GBK")#r代表以只读模式打开文件 encoding="GBK"以GBK格式读取文件
file = file.readlines()
for line in file:
    line = line.strip('\n')
    namelist.append(line)
print(namelist)
pool = Pool(3)                                     #开启线程池
        # 定义循环数
origin_num = [x for x in namelist]                #每一个货物开启一个线程
        # 利用map让线程池中的所有线程‘同时’执行calc_power2函数
#zhu为函数zhu origin_num为任务列表
pool.map(zhu, origin_num)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1504448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

golang实现正向代理和反向代理

文章目录 正向代理反向代理区别与联系:总结代理服务器实现正向代理反向代理正向代理 正向代理是客户端代理,它位于客户端和目标服务器之间。它的作用是保护客户端的隐私和安全。 如我们现在想要访问谷歌,但是由于某些原因,无法直接访问到谷歌,我们可以通过连接一台代理服务…

2024 年中国高校大数据挑战赛赛题 D:行业职业技术培训能力评价完整思路以及源代码分享

中国是制造业大国,产业门类齐全,每年需要培养大量的技能娴 熟的技术工人进入工厂。某行业在全国有多所不同类型(如国家级、 省级等)的职业技术培训学校,进行 5 种技能培训。学员入校时需要 进行统一的技能考核&#xf…

Feign实现微服务间远程调用续;基于Redis实现消息队列用于延迟任务的处理,Redis分布式锁的实现;(黑马头条Day05)

目录 延迟任务和定时任务 使用Redis设计延迟队列原理 点评项目中选用list和zset两种数据结构进行实现 如何缓解Redis内存的压力同时保证Redis中任务能够被正确消费不丢失 系统流程设计 使用Feign实现微服务间的任务消费以及文章自动审核 系统微服务功能介绍 提交文章-&g…

LCR 131. 砍竹子 I

解题思路:(与砍竹子II的区别是,这里的竹子长度数量级较小) 数学推导或贪心 切分规则: 等长,且尽量为3 b0时,pow(3,a) b1时,pow(3,a-1)*4 少一段3,并入b生成一…

T2 小美的平衡矩阵(25分) - 美团编程题 题解

考试平台: 牛客网 题目类型: 30道单选题(60分) 2 道编程题 (15分 25分) 考试时间: 2024-03-09 (两小时) 题目描述 小美拿到了一个n*n的矩阵,其中每个元素是…

HTML 学习笔记(五)超链接

HYperText 超文是用超链接的方式&#xff0c;将不同空间的文字信息组合在一起的网状文其就像一个桥梁&#xff0c;建立了不同页面中的联系&#xff0c;实现了访问不同网站中页面的功能 <!DOCTYPE html> <html lang"en"><head><meta charset&qu…

HarmonyOS NEXT应用开发之MpChart图表实现案例

介绍 MpChart是一个包含各种类型图表的图表库&#xff0c;主要用于业务数据汇总&#xff0c;例如销售数据走势图&#xff0c;股价走势图等场景中使用&#xff0c;方便开发者快速实现图表UI。本示例主要介绍如何使用三方库MpChart实现柱状图UI效果。如堆叠数据类型显示&#xf…

Linux多线程之初识多线程

(&#xff61;&#xff65;∀&#xff65;)&#xff89;&#xff9e;嗨&#xff01;你好这里是ky233的主页&#xff1a;这里是ky233的主页&#xff0c;欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 一、线程概念 1.vm_area_struct 2.页帧与页…

在Blender中清理由Instant-NGP等几何学习技术生成的网格

使用布尔运算: 创建一个大的立方体或其他简单几何体包裹住全部网格。使用布尔修改器对两个网格进行“差集”运算。这将移除超出包裹体之外的多余网格部分。 手动选择并删除: 进入编辑模式&#xff08;按Tab键&#xff09;。按A键取消选择所有顶点。按B键并拖动以选择您想要删除…

❤ Vue3项目搭建系统篇(二)

❤ Vue3项目搭建系统篇&#xff08;二&#xff09; 1、安装和配置 Element Plus&#xff08;完整导入&#xff09; yarn add element-plus --savemain.ts中引入&#xff1a; // 引入组件 import ElementPlus from element-plus import element-plus/dist/index.css const ap…

MySQL-锁:共享锁(读)、排他锁(写)、表锁、行锁、意向锁、间隙锁,锁升级

MySQL-锁&#xff1a;共享锁&#xff08;读&#xff09;、排他锁&#xff08;写&#xff09;、表锁、行锁、意向锁、间隙锁 共享锁&#xff08;读锁&#xff09;、排他锁表锁行锁意向锁间隙锁锁升级 MySQL数据库中的锁是控制并发访问的重要机制&#xff0c;它们确保数据的一致性…

系统安全保证措施-word

【系统安全保证措施-各支撑材料直接套用】 一、 身份鉴别 二、 访问控制 三、 通信完整性、保密性 四、 抗抵赖 五、 数据完整性 六、 数据保密性 七、 应用安全支撑系统设计 软件全套资料下载进主页。

JAVA后端开发面试基础知识(八)——Spring

Spring 1. 什么是 Spring 框架 Spring是一个轻量级Java开发框架 我们一般说 Spring 框架指的都是 Spring Framework&#xff0c;它是很多模块的集合&#xff0c;使用这些模块可以很方便地协助我们进行开发&#xff0c;比如说 Spring 支持 IoC&#xff08;Inverse of Control:控…

pta团队天题题-阅览室(c++)

天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时&#xff0c;管理员输入书号并按下S键&#xff0c;程序开始计时&#xff1b;当读者还书时&#xff0c;管理员输入书号并按下E键&#xff0c;程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时…

React Three Fiber快速入门

https://threejs-journey.com/lessons/what-are-react-and-react-three-fiber#学习笔记 1.基础知识 resize 填充模版 构建第一个场景 we didn’t have to create a scenewe didn’t have to create the webglrenderthe scene is being rendered on each framethe default…

bug--xxoobject has no attribute xxx

Python 创建类的实例后却不能调用写的方法&#xff0c;检查了半天原来是缩进的问题&#xff0c;def函数不应该和class并列 只能说这个英文空格太小了&#xff0c;看不出来。。。。

实验二(一):IPV4编址及IPV4路由基础实验

一实验介绍 1.关于本实验 IPv4( Internet Protocol Version 4)是 TCP/IP 协议族中最为核心的协议之一。 它工作在 TCP/IP参考模型的网际互联层&#xff0c;该层与 OSI参考模型的网络层相对应。 网络层提供了无连接数据传输服务&#xff0c;即网络在发送分组时不需要先建立连…

vue3引入高德地图

首先注册高德key https://console.amap.com/dev/key/a vue项目中安转地图包 pnpm i amap/amap-jsapi-loader -S 先说最重要核心&#xff0c;踩雷过 页面中需写入以下代码&#xff0c;现在注册的高德key要求强制写入安全密钥 window._AMapSecurityConfig {securityJsCode…

linux系统---selinux

目录 前言 一、SELinux 的作用及权限管理机制 1.SELinux 的作用 1.1DAC 1.2MAC 1.3DAC 和 MAC 的对比 2.SELinux 基本概念 2.1主体&#xff08;Subject&#xff09; 2.2对象&#xff08;Object&#xff09; 2.3政策和规则&#xff08;Policy & Rule&#xff09; …

蓝桥杯-List集合

目录 List集合实例化 List集合实例化步骤 常用方法 ArrayList方法 1&#xff1a;add(Object element) 2&#xff1a;size() 3&#xff1a;get(int index) 4&#xff1a;isEmpty() 5:contains(Object o) 6&#xff1a;remove(int index) 总结ArrayList list集合的特点…