mingerlcm

 

 

基于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\': \'2\',
    \'pageSize\': \'10\'
}

# 自定义请求头信息,相关的头信息必须封装在字典结构中
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

分类:

技术点:

相关文章:

  • 2021-09-28
  • 2021-09-28
  • 2021-09-28
  • 2021-11-02
  • 2019-01-23
  • 2019-11-24
猜你喜欢
  • 2021-11-02
  • 2021-11-02
  • 2021-09-28
  • 2019-11-21
  • 2021-09-28
  • 2021-10-01
  • 2021-09-28
相关资源
相似解决方案