千家信息网

Python如何爬取肯德基

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要为大家展示了"Python如何爬取肯德基",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Python如何爬取肯德基"这篇文章吧。准备工作查看肯德
千家信息网最后更新 2026年11月03日Python如何爬取肯德基

这篇文章主要为大家展示了"Python如何爬取肯德基",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Python如何爬取肯德基"这篇文章吧。

准备工作

查看肯德基官网的请求方法:post请求。

X-Requested-With: XMLHttpRequest 判断得肯德基官网是ajax请求

通过这两个准备步骤,明确本次爬虫目标:
ajax的post请求肯德基官网 获取上海肯德基地点前10页。

分析

获取上海肯德基地点前10页,那就需要先对每页的url进行分析。

第一页

# page1# http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname# POST# cname: 上海# pid:# pageIndex: 1# pageSize: 10

第二页

# page2# http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname# POST# cname: 上海# pid:# pageIndex: 2# pageSize: 10

第三页依次类推。

程序入口

首先回顾urllib爬取的基本操作:

# 使用urllib获取百度首页的源码import urllib.request# 1.定义一个url,就是你要访问的地址url = 'http://www.baidu.com'# 2.模拟浏览器向服务器发送请求 response响应response = urllib.request.urlopen(url)# 3.获取响应中的页面的源码 content内容# read方法 返回的是字节形式的二进制数据# 将二进制数据转换为字符串# 二进制-->字符串  解码 decode方法content = response.read().decode('utf-8')# 4.打印数据print(content)
  • 定义一个url,就是你要访问的地址

  • 模拟浏览器向服务器发送请求 response响应

  • 获取响应中的页面的源码 content内容

if __name__ == '__main__':    start_page = int(input('请输入起始页码: '))    end_page = int(input('请输入结束页码: '))    for page in range(start_page, end_page+1):        # 请求对象的定制        request = create_request(page)        # 获取网页源码        content = get_content(request)        # 下载数据        down_load(page, content)

对应的,我们在主函数中也类似声明方法。

url组成数据定位

爬虫的关键在于找接口。对于这个案例,在预览页可以找到页面对应的json数据,说明这是我们要的数据。

构造url

不难发现,肯德基官网的url的一个共同点,我们把它保存为base_url。

base_url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname'

参数

老样子,找规律,只有'pageIndex'和页码有关。

data = {        'cname': '上海',        'pid': '',        'pageIndex': page,        'pageSize': '10'    }

post请求

  • post请求的参数 必须要进行编码

data = urllib.parse.urlencode(data).encode('utf-8')

  • 编码之后必须调用encode方法

  • 参数放在请求对象定制的方法中:post的请求的参数,是不会拼接在url后面的,而是放在请求对象定制的参数中

所以将data进行编码

data = urllib.parse.urlencode(data).encode('utf-8')

标头获取(防止反爬的一种手段)

即 响应头中UA部分。

User Agent,用户代理,特殊字符串头,使得服务器能够识别客户使用的操作系统及版本,CPU类型,浏览器及版本,浏览器内核,浏览器渲染引擎,浏览器语言,浏览器插件等。

 headers = {        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38'    }

请求对象定制

参数,base_url,请求头都准备得当后,就可以进行请求对象定制了。

 request = urllib.request.Request(base_url,  headers=headers, data=data)

获取网页源码

把request请求作为参数,模拟浏览器向服务器发送请求 获得response响应。

 response = urllib.request.urlopen(request)    content = response.read().decode('utf-8')

获取响应中的页面的源码,下载数据

使用 read()方法,得到字节形式的二进制数据,需要使用 decode进行解码,转换为字符串。

content = response.read().decode('utf-8')

然后我们将下载得到的数据写进文件,使用 with open() as fp 的语法,系统自动关闭文件。

def down_load(page, content):    with open('kfc_' + str(page) + '.json', 'w', encoding='utf-8') as fp:        fp.write(content)

全部代码

# ajax的post请求肯德基官网 获取上海肯德基地点前10页# page1# http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname# POST# cname: 上海# pid:# pageIndex: 1# pageSize: 10# page2# http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname# POST# cname: 上海# pid:# pageIndex: 2# pageSize: 10import urllib.request, urllib.parsedef create_request(page):    base_url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname'    data = {        'cname': '上海',        'pid': '',        'pageIndex': page,        'pageSize': '10'    }    data = urllib.parse.urlencode(data).encode('utf-8')    headers = {        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38'    }    request = urllib.request.Request(base_url, headers=headers, data=data)    return requestdef get_content(request):    response = urllib.request.urlopen(request)    content = response.read().decode('utf-8')    return contentdef down_load(page, content):    with open('kfc_' + str(page) + '.json', 'w', encoding='utf-8') as fp:        fp.write(content)if __name__ == '__main__':    start_page = int(input('请输入起始页码: '))    end_page = int(input('请输入结束页码: '))    for page in range(start_page, end_page+1):        # 请求对象的定制        request = create_request(page)        # 获取网页源码        content = get_content(request)        # 下载数据        down_load(page, content)

爬取后结果

以上是"Python如何爬取肯德基"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

肯德 肯德基 数据 上海 浏览器 浏览 参数 方法 源码 对象 内容 页码 二进制 字符 字符串 服务器 页面 服务 输入 地点 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司排名 深圳科技互联网 互联网科技小贷 艾特科技互联网 朗涯互联网科技 睿民互联网科技 重庆科技学院互联网 新华互联网科技校企合作 广西拼得多互联网科技有限公司 互联网和高科技公司 云创客互联网科技公司 现代科技和互联网有关系吗 互联网系的金融科技公司 新兴科技互联网创新大赛颁奖典礼 互联网科技与大数据专业 深圳市罗太互联网科技有限公司 南博望互联网科技有限公司 区块链结合互联网科技 山东子淼互联网科技有限公司 互联网科技股为什么大涨 科技制造互联网公司 万易互联网科技有限公司 哈尔滨新华互联网科技 湖南洣水互联网科技有限公司扣款 承德科技产业互联网发展 互联网科技公司有风险吗 保险科技服务互联网营销体系 陕西云淼互联网科技公司 信承诺互联网科技有限公司 陕西彩京云互联网科技有限公司
0