zoukankan      html  css  js  c++  java
  • 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': '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

  • 相关阅读:
    Springboot演示小Demo
    快速构建一个 Springboot
    javase练习题--每天写写
    javase练习题
    WebDriver API——延时操作及元素等待
    WebDriver API——javascript的相关操作
    Jenkins安装部署及tomcat的入门介绍
    WebDriver API——鼠标及键盘操作Actions
    sql查询练习
    睡前反省,絮叨絮叨
  • 原文地址:https://www.cnblogs.com/mingerlcm/p/11378896.html
Copyright © 2011-2022 走看看