python 爬虫 基于requests模块发起ajax的post请求
基于requests模块发起ajax的post请求
需求:爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定某个城市地点的餐厅数据
点击肯德基餐厅查询页面

输入北京点击查询是一个提交form表单,异步ajax的post请求,使用抓包工具抓取请求

基于ajax的POST请求携带的参数:
keyword参数是城市名,改变这个参数该请求的数据也会改变
pageIndex:第几页的数据值 ,例子:第一页
pageSize:表示一页获取几条数据,获取10条数据
可以调整这些参数,会针对响应数据变化

import requests
import json # 1指定ajax-post请求的url(通过抓包进行获取)
url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword' # 处理post请求携带的参数(从抓包工具中获取)
data = {
'cname': '',
'pid': '',
'keyword': '北京',
'pageIndex': '',
'pageSize': ''
} # 自定义请求头信息,相关的头信息必须封装在字典结构中
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
} # 2.发起基于ajax的post请求
response = requests.post(url=url,data=data,headers=headers) #获取响应内容:响应内容为json串
data = response.text
data = json.loads(data)
for i in data["Table1"]:
print(i) '''
{'rownum': 11, 'storeName': '巴沟', 'addressDetail': '巴沟路2号北京华联万柳购物中心一层', 'pro': 'Wi-Fi,礼品卡,生日餐会', 'provinceName': '北京市', 'cityName': '北京市'}
{'rownum': 12, 'storeName': '北京站宝宸', 'addressDetail': '北京站街22号一层+二层', 'pro': '24小时,Wi-Fi,礼品卡', 'provinceName': '北京市', 'cityName': '北京市'}
{'rownum': 13, 'storeName': '欢乐谷', 'addressDetail': '南磨房乡小武基北路北京欢乐谷内欢乐时光区一层', 'pro': '礼品卡', 'provinceName': '北京市', 'cityName': '北京市'}
{'rownum': 14, 'storeName': '亦庄沃尔玛', 'addressDetail': '经济技术开发区文化园东路6号北京经开汇展中心1-2层', 'pro': 'Wi-Fi,店内参观,礼品卡,生日餐会', 'provinceName': '北京市', 'cityName': '北京市'}
{'rownum': 15, 'storeName': '北京南站二', 'addressDetail': '北京南站候车大厅地下一层(快速进站口1)部分场地', 'pro': '礼品卡', 'provinceName': '北京市', 'cityName': '北京市'}
{'rownum': 16, 'storeName': '北京站Select', 'addressDetail': '北京火车站候车大厅一层西侧原商务中心', 'pro': '精选店,礼品卡', 'provinceName': '北京市', 'cityName': '北京市'}
{'rownum': 17, 'storeName': '西客站内三', 'addressDetail': '莲花桥东路118号北京西客站候车大厅内2层第4营业厅及2层夹层回廊', 'pro': '礼品卡', 'provinceName': '北京市', 'cityName': '北京市'}
{'rownum': 18, 'storeName': '通州北苑华联', 'addressDetail': '杨庄北里五十二号天时名苑小区十四号楼北京华联南侧一层', 'pro': 'Wi-Fi,店内参观,礼品卡,生日餐会', 'provinceName': '北京市', 'cityName': '北京市'}
{'rownum': 19, 'storeName': '日照银座餐厅', 'addressDetail': '北京路与泰安路交汇处银座商城一楼', 'pro': 'Wi-Fi,礼品卡,生日餐会', 'provinceName': '山东省', 'cityName': '日照市'}
{'rownum': 20, 'storeName': '荆州北京路', 'addressDetail': '沙区北京中路227号肯德基餐厅', 'pro': 'Wi-Fi,点唱机,礼品卡,生日餐会', 'provinceName': '湖北省', 'cityName': '荆州市'}
使用抓包工具抓取ajax异步请求所对应的url
python 爬虫 基于requests模块发起ajax的post请求的更多相关文章
- python 爬虫 基于requests模块发起ajax的get请求
基于requests模块发起ajax的get请求 需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据 用抓包工具捉取 使用ajax加载页面的请求 鼠标往下 ...
- python 爬虫 基于requests模块的get请求
需求:爬取搜狗首页的页面数据 import requests # 1.指定url url = 'https://www.sogou.com/' # 2.发起get请求:get方法会返回请求成功的响应对 ...
- Python爬虫之requests模块(1)
一.引入 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. 警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症.冗余代码症.重新发明轮子症.啃 ...
- python爬虫值requests模块
- 基于如下5点展开requests模块的学习 什么是requests模块 requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求.功能强大,用法简洁高效.在 ...
- 孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块
孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块 (完整学习过程屏幕记录视频地址在文末) 从今天起开始正式学习Python的爬虫. 今天已经初步了解了两个主要的模块: ...
- Python爬虫练习(requests模块)
Python爬虫练习(requests模块) 关注公众号"轻松学编程"了解更多. 一.使用正则表达式解析页面和提取数据 1.爬取动态数据(js格式) 爬取http://fund.e ...
- Python爬虫之requests模块(2)
一.今日内容 session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 二.回顾 xpath的解析流程 bs4的解析流程 常用xpath表达式 常用bs4解析方法 三. ...
- Python 爬虫二 requests模块
requests模块 Requests模块 get方法请求 整体演示一下: import requests response = requests.get("https://www.baid ...
- Python爬虫(requests模块)
Requests是唯一的一个非转基因的Python HTTP库,人类可以安全享用. Requests基础学习 使用方法: 1.导入Requests模块: import requests 2.尝试用g ...
随机推荐
- Luogu P4398 [JSOI2008]Blue Mary的战役地图 矩阵哈希
其实可以二分矩阵边长但是我太懒了$qwq$. 把每个子矩阵扔到$map$里,然后就没了 #include<cstdio> #include<map> #include<i ...
- 013_linuxC++之_派生类中权限的调整
(一)在上一篇012_LINUXC++之_类的继承定义中我们知道在派生类中可以访问public和protectd中的数据 (二)那么我们就可以在派生类中将上面两个中的数据进行权限的修改 (三)程序 # ...
- neo4j 一些常用的CQL
创建节点.关系 创建节点(小明):create (n:people{name:’小明’,age:’18’,sex:’男’}) return n; 创建节点(小红): create (n:people{ ...
- Python爬虫 Urllib库的基本使用
1.构造Requset 其实上面的urlopen参数可以传入一个request请求,它其实就是一个Request类的实例,构造时需要传入Url,Data等等的内容.比如上面的两行代码,我们可以这么改写 ...
- CodeForces Good Bye 2016
A题,水题略过. B题,也水,但是想复杂了.只要运动超出[0,20000]的范围就算不可能了. C题,我自己的方法是解不等式,然后取最大的答案即可.代码如下: #include <stdio.h ...
- UVA 10029 Edit Step Ladders ——(DAG求最长路)
题意:升序的给出一本若干个单词,每个单词都可删除一个字母,添加一个字母或者改变一个字母,如果任意一个操作以后能变成另外一个字典中的单词,那么就连一条有向边,求最长的长度. 分析:DAG的最长路和最短路 ...
- find命令计算代码行数
[anonymous@localhost ~/lvs/ipvsadm- -regex '.*Makefile.*' -o -regex '.*\.[ch]' -exec cat {} \; | wc ...
- 在iOS开发中使用icon font的方法
http://iconfont.cn/help/iconuse.html 在开发阿里数据iOS版客户端的时候,由于项目进度很紧,项目里的所有图标都是用最平常的背景图片方案来实现.而为了要兼容普通屏与R ...
- 计算可迭代对象的shape 老是忘~方便记法
import numpy as np bbox =[ [[6.37532410e+02,3.83636505e+02,7.04683777e+02,4.43150146e+02, 6.23311400 ...
- 关于php文件操作的几个小trick
记录一些ctf题目中近期遇到的一些文件操作trick,不定时更新 1.move_uploaded_file 一般用来保存上传的文件,第二个参数一般是最终保存的文件名,针对此函数,若在一定条件下$new ...