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

news2024/11/26 12:43:43

接上篇《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

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

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

相关文章

SciencePub学术 | 国人友好类重点SCIEEI征稿中

SciencePub学术 刊源推荐:国人友好类重点SCIE&EI征稿中!信息如下,录满为止: 一、期刊概况: 二、期刊要求 1. 论文为原创,未公开发表,初稿可提交中文版本,终稿必须是英文版本; …

Redis 跳表skiplist

跳跃表 在单链表中查询一个元素的时间复杂度为O(n),即使该单链表是有序的,我们也不能通过2分的方式缩减时间复杂度。 跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针(注:可以理解为维护了多条…

【计算机网络】数据链路层之随机接入-CSMA/CA协议(无线局域网)

1.概念 2.无线局域网可否实现碰撞检验CD 3.方案 CSMA/CA 碰撞避免 4. 两种帧间间隔 IFS 为什么需要等待DIFS? 为什么需要等待SIFS? 为什么还要退避一段时间才能使用信道? 5.退避算法 使用退避算法的情况 退避算法 举例 6.信道预约 7.虚拟载波监听 8.题目 9.解析 …

分享一个上传按钮

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>上传</title><link rel"stylesheet" href"https://fonts.googleapis.com/css2…

面对Android开发高薪诱惑,如何拿到大厂offer?

前言 出来打工最看重的就是薪资&#xff0c;作为一名5年开发经验的Android人员。在如今的大环境中薪资一降再降&#xff0c;还没人要。技术还还算可以但是面试一直被刷下来&#xff1f;这是为什么&#xff0c;本篇我们来聊聊Android开发面试中的关键。 面试过程 通常面试过程…

【Vue3】学习笔记-watch函数

与Vue2.x中watch配置功能一致 两个小“坑”&#xff1a; 监视reactive定义的响应式数据时&#xff1a;oldValue无法正确获取、强制开启了深度监视&#xff08;deep配置失效&#xff09;。监视reactive定义的响应式数据中某个属性时&#xff1a;deep配置有效。 <template&…

数据分析三大件

一、jupyter的基本使用 二、Numpy 2.1 numpy的创建 #使用array&#xff08;&#xff09;创建一个多维数组 import numpy as np arrnp.array([1,2,3])2.2 numpy的属性 修改数组的元素类型 2.3 索引和切片 &#xff08;1&#xff09;行切片 &#xff08;2&#xff09;列切片 注…

高压线路距离保护程序逻辑原理(二)

二、选相子程序原理 距离保护的故障处理程序逻辑的第一步是判别故障相&#xff0c;即选相。只有判定了故障的种类及相别&#xff0c;才能确定阻抗计算应取用什么相别的电流和电压&#xff0c;例如BC相故障取和&#xff0c;A相接地故障取和十3&#xff08;详见第二章第二节解微…

远程桌面连接已开启无法连接?快解析助力远程访问

一、如何开启远程桌面 查询并记录远程计算机的IP&#xff0c;点击“开始——运行”&#xff0c;输入“cmd”命令后回车&#xff0c;准确查看并记录ipadress在计算机上右键&#xff0c;选择属性&#xff0c;点击远程设置&#xff0c;在弹出来的设置界面中&#xff0c;勾选“允许…

HFUT Data Structure Experiment: SkipList

写给我的学弟 如果你看到了这个题&#xff0c;赶快跑&#xff0c;千万别选。 这个题的图形化会让你非常痛苦。并且这道题只有小小85分&#xff0c;为啥不换个85分的更简单的&#xff1f;或者换个90分以上的题不好吗。 如果你单单想学习一下这个数据结构&#xff0c;那挺好的&…

xftp下载安装及简单使用

一、xftp简介 Xftp是一个功能强大的SFTP、FTP 文件传输软件。使用了 Xftp 以后&#xff0c;MS Windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。Xftp 能同时适应初级用户和高级用户的需要。它采用了标准的 Windows 风格的向导&#xff0c;它简单的界面能与其他…

GEACC-5595交换机

GE反射内存交换机特性 l 1 到 8 口可配置SFP收发器 l 大可级联256个节点 l 自动旁路故障节点 l 自动旁路模式可选 l 配置可选节点传输距离达10公里 l 可插拔收发器支持单模或者多模模式 l 1x8 口或者2x4 口 l 可以通过串口了解状态进行设置 概述 GE反射内存交换机&#xff08;以…

Linux-- . 和 ..

一、含义&#xff1a; . :表示当前路径 .. :表示直接上级路径 二、验证&#xff1a; 三、..用来返回上级目录&#xff0c;.有上面作用&#xff1f; 我们在Linux下写代码后生成的可执行程序a.out,我们运行它时的指令是./a.out 故使用.可以限定我们要执行的可执行程序在什么…

C语言编程—内存管理

C语言中的动态内存管理。C语言为内存的分配和管理提供了几个函数。这些函数可以在 <stdlib.h> 头文件中找到。 在C语言中&#xff0c;内存是通过指针变量来管理的。指针是一个变量&#xff0c;它存储了一个内存地址&#xff0c;这个内存地址可以指向任何数据类型的变量&…

JavaScript 中的行继续符

这个简短的 JavaScript 文章涵盖了 JavaScript 中的词法语法。 此外&#xff0c;还将使用各种新的换行技术深入介绍字符串&#xff0c;以及在处理这些字符串时如何处理换行符。 JavaScript 中的词法语法 在计算机科学中&#xff0c;词法语法是一种描述标记句法的技术语法。 该…

Spring Boot中的Profile:原理、用法与示例

Spring Boot中的Profile&#xff1a;原理、用法与示例 前言 Spring Boot 是一个快速开发 Spring 应用程序的框架&#xff0c;它提供了很多有用的功能和特性。其中&#xff0c;Profile 是一个常用的功能&#xff0c;它可以根据不同的环境配置来加载不同的配置文件&#xff0c;…

轻量级网络CNN系列(二):GhostNetV2

欢迎关注公众号 – AICV与前沿 欢迎关注公众号 – AICV与前沿 回顾 &#xff08;1&#xff09;Depthwise与Pointwise卷积 DW卷积的一个卷积核负责一个通道&#xff0c;例如对一个355的图片&#xff0c;输出通道数要与输入通道数相同&#xff0c;则普通卷积操作需要3333的卷积…

记一次Smartbi登录绕过

FOFA&#xff1a;app"SMARTBI" 找到目标站点验证是否存在漏洞 域名后面拼接以下路径 /smartbi/vision/RMIServlet 有下面的回显说明有可能存在漏洞(有些站点不行) 用Hackbar发送post请求 失败的话更改用户:system,public,service三个内置用户都尝试一遍 发送请求…

AutoSAR系列讲解(入门篇)3.6-RTE与Interface接口

RTE与Interface接口 一、Interface接口总览 二、AutoSAR接口 三、标准接口 四、标准AutoSAR接口 一、Interface接口总览 少说废话&#xff0c;先上图 上图将所有的接口以及其分布的位置都详细的标识了出来&#xff0c;还是用的原来的那张ECU的图添加的&#xff0c;方便大家…

用友NC uapjs RCE漏洞复现(CNVD-C-2023-76801)

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具&#xff0c;用友NC提供了一系列业务管理模块&#xff0c;包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等&#xff0c;帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友NC及N…