post请求(爬取肯德基基本分布)
目录
(一)post请求
(二)爬取
1.先定义一个爬取页数范围的主函数
2.请求对象的定制
3 .获取网页源码
4.下载数据
结果:
(一)post请求
特点:
- 用于向服务器提交数据,以请求服务器进行特定的处理。
- 通常会导致服务器端状态的改变,比如向服务器提交表单数据进行注册、登录、发表评论等操作。
- 可以提交较大的数据量,因为数据不是放在 URL 中,而是放在请求体中
post请求与get请求的区别
- 数据位置:GET 请求的数据放在 URL 中,而 POST 请求的数据放在请求体中。
- 安全性:POST 请求相对 GET 请求更安全,因为数据不在 URL 中显示,不容易被第三方看到。
- 缓存:GET 请求可以被缓存,而 POST 请求通常不被缓存。
- 幂等性:GET 请求是幂等的,即多次相同的请求会产生相同的结果;而 POST 请求一般不是幂等的,多次提交可能会产生不同的结果。
(二)爬取
1.先定义一个爬取页数范围的主函数
if __name__ == '__main__':start_page = int(input("请输入起始页码:"))end_page = int(input("请输入结束页码:"))for page in range(start_page, end_page + 1):
2.请求对象的定制
def create_request(page):headers = {"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"}data = {"cname": "北京","pid" : " ","pageIndex" : page,"pageSize": "10"}
#因为要与url链接必须要进行编码(有中文)data = urllib.parse.urlencode(data).encode("utf-8")url = 'https://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname'request = urllib.request.Request(url=url,headers=headers,data = data)return request
- headers是设置请求头
- data为网页中的数据
- 因为要与url链接data必须要进行编码(有中文)
3 .获取网页源码
def get_content(request):response = urllib.request.urlopen(request)content = response.read().decode('utf-8')return content
4.下载数据
def down_load(content,page):with open("kfc_" + str(page) + ".json","w",encoding="utf-8") as fp:fp.write(content)
- page为int型字符 所有拼接时要转换为字符型
结果:
努力中。。。