【Python从入门到进阶】25、urllib获取快餐网站店铺数据

接上篇《24、urllib获取网站电影排行
上一篇我们讲解了如何使用urllib的get请求抓取某某电影排行榜信息。本篇我们来讲解如何使用urllib的post请求抓取某某快餐网站店铺数据。

一、某某快餐网站介绍

1、某某快餐网站

某某快餐店网址为:http://www.kfc.com.cn/kfccda/index.aspx
作为全球最大的快餐连锁店之一,某某基以其独特的味道和创新的产品而备受消费者喜爱。作为一个时尚、现代和互联网化的品牌,某某基官网是与时俱进的,为广大消费者提供了更多的选择和方便。
在某某基官网上,用户可以轻松地浏览所有的产品,并了解每种菜品的详细信息和口味。还可以通过网上订购,在家中享用美食。此外,某某基官网还提供了专业的营养咨询和健康生活方式提示,以满足不同消费者的需求:

2、餐厅列表信息介绍

点击网站首页的“餐厅查询”,或这直接浏览器输入“http://www.kfc.com.cn/kfccda/storelist/index.aspx”地址,都可以看到某某快餐店餐厅的列表信息:

选择相应的城市,就可以查询到,结果是以从上到下的列表形式展示:

二、抓取餐厅列表信息

1、分析页面数据请求

我们按照上面网页的分析,准备抓取某某基餐厅列表第一页所有餐厅信息。
我们F12打开餐厅列表首页的源码信息,清空其中的内容,重新选择城市后,可以看到只有一条请求信息:

通过分析判断,这里的结果看起来就是餐厅列表的请求结果:

地址是“http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname”,是一个post请求:

请求参数有“cname”、“pid”、“pageIndex”、“pageSize”:

其中“cname”为要查询的城市名称,“pid”为上图“生日聚会”、“全天营业”等标签的id,“pageIndex”和“pageSize”为分页的页码和一页加载的数据量。

2、使用urllib抓取首页数据

我们已经确定了抓取的url地址为“http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname”,请求的参数也确定了,head参数我们观察到没有Cookie,只需要定义一个User-Agent即可:

# _*_ coding : utf-8 _*_
# @Time : 2023-06-29 11:01
# @Author : 光仔December
# @File : 抓取某某快餐网站店铺数据
# @Project : Python基础

import urllib.request

# 某某快餐店铺列表的API地址
url = "http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname"

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

# 发送HTTP POST请求需要定义请求体
# cname 是搜索城市名,pageIndex和pageSize为分页的页码和一页加载的数据量
data = {'cname': '郑州', 'pageIndex': 1, 'pageSize': 10}

# urlencode 将字典类型的数据data转换为URL参数形式的字符串(cname=%E9%83%91%E5%B7%9E&pageIndex=0&pageSize=10)
# .encode():将字符串类型的URL参数编码为bytes类型。由于HTTP请求中需要传递bytes类型的数据,因此需要使用该方法进行编码。
data = urllib.parse.urlencode(data).encode()
req = urllib.request.Request(url=url, headers=headers, data=data)
response = urllib.request.urlopen(req)

# 获取响应的数据
content = response.read().decode('utf-8')

# 将结果写入json文件,因为里面有中文,所以要指定encoding编码格式
fp = open('xxj.json', 'w', encoding='utf-8')
fp.write(content)

注:和get方式直接在url上拼接参数不同,post请求需要单独指定请求体。
结果,生成了一个json文件,里面就是第一页的餐厅信息:

分页获取就不再赘述,和之前获取电影列表一样。

至此,我们通过urllib成功获取到了某某快餐网站餐厅店铺数据。下一篇博文我们将学习如何处理urllib的异常。

参考:尚硅谷Python爬虫教程小白零基础速通教学视频

转载请注明出处:https://blog.csdn.net/acmman/article/details/131452923

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光仔December

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值