zoukankan      html  css  js  c++  java
  • 爬虫与Python:(四)爬虫进阶一之数据抓取——2.Python模拟Ajax

     如何用用Python模拟Ajax请求,我们仍然以飞常准大数据为例(https://data.variflight.com/analytics/CodeQuery),通过查询北京机场的三个字母码“PEK”来请求获取它的数据,把北京机场的信息提取出来。

    分析请求和响应结果

    详细的Chrome开发者工具使用方法以及“airportCode”的响应请求获取方法不在赘述了。这里直接上分析结果:

    • 请求链接:https://data.variflight.com/analytics/Codeapi/airportCode
    • 请求方法:POST
    • 请求数据:{key:"PEK" , page : 0} 。key就是输入“PEK”要查询的三字码,page是页码。

    分析了请求结果,接下来我们分析响应结果如图1所示:

    图1

    • code:代表响应状态码是失败还是成功。
    • data: 我们想要的内容,里面包含了北京机场的相关信息。
    • message: 提示信息。

    编写代码

    下面使用Python的requests库编码代码来模拟数据。首先定义一个方法来获取每次请求的结果。在请求时,key和page是一个可变参数,所以将它们作为方法的参数传递进来,相关示例代码如下:

     1 # 模拟抓取飞常准大数据的机场信息
     2 import json
     3 import requests
     4 
     5 '''
     6 获取请求数据
     7 @:param key 查询关键字
     8 @:param page 页码(默认为0)
     9 '''
    10 def get_data(key,page = 0):
    11     url = "https://data.variflight.com/analytics/Codeapi/airportCode"
    12     data = {
    13         "key":key,
    14         "page" :page
    15     }
    16     res = requests.request("post",url , data=data)
    17     return res.text
    18 
    19 '''
    20 获取解析结果
    21 @:param data
    22 '''
    23 def get_parse(data):
    24     return json.loads(data)
    25 
    26 data = get_data("PEK" , 0)
    27 apt_info = get_parse(data)
    28 print(apt_info,apt_info["data"])

    运行结果如下:

     另外,如何将保存的数据存储到数据库或Excel中?将会在后面讲到。

  • 相关阅读:
    Attributes.Add用途与用法
    Reapter控件中更换Td背景色
    SQL SERVER查询时间条件式写法
    C# Cache何时使用及使用方法
    C#中Cache用法
    用sql语句将两个时间相减,得到时间距的DateDiff()函数
    HTML5 带进度条的异步文件上传原理
    Node环境Grunt开发流
    HTML5的Web SQL Databases(html5 本地数据库)API
    移动端范围拖动选择效果
  • 原文地址:https://www.cnblogs.com/luyj00436/p/15434298.html
Copyright © 2011-2022 走看看