python爬取机票信息_python Ajax异步爬取机票航班信息

目标:

爬取未来40天多个航线的机票价格和航班信息python Ajax异步爬取机票航班信息​www.wangwanghub.com60cb988bbf50b13f3a1ce57e17b231fa.png

Ajax介绍:

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

起始URL:

明确爬取数据信息:

这个api网址是无法访问的,不过依旧有数据传送,我们只能通过模拟头部请求获取(payload是一种以JSON格式进行数据传输的一种方式)

发现有一个products 的文件 (如果没有 请尝试 F5 刷新页面)

我们可以看到Json数据都在response当中,也就是我们想要的航班信息,机票价格都是通过这个文件传送的. 我们复制这行Json数据在其他软件展开便于观察内容,(或者网页搜索:Json在线解析)

首先是航班信息:

往下有机票价格:

我们看到机票价格分了很多种类,有售价,打折的价格,我们就爬取第一个price就好了,经过观察大部分价格都是一样的

我们已经明确的要爬取的信息了, 接下来就开始抓取数据吧

先获取一天一个城市的航班信息

获取Json 信息:

import requests

import json

from fake_useragent import UserAgent

if __name__ == "__main__":

url = url = "https://flights.ctrip.com/itinerary/api/12808/products/oneway/sjw,sjw-xmn?date=2020-03-25"

# 这里的url 必须写全!!!

headers = {

"User-Agent": '{}'.format(UserAgent().random), # 构造随机请求头

"Referer": "https://flights.ctrip.com/itinerary/oneway/sjw-xmn?date=2020-03-25",

"Content-Type": "application/json"

}

request_payload = {

"flightWay": "Oneway",

"classType": "ALL",

"hasChild": False,

"hasBaby": False,

"searchIndex": 1,

"airportParams": [

{"dcity": "SJW", "acity": "XMN", "dcityname": "石家庄", "acityname": "厦门", "date": "2020-03-25", "dcityid": 428}

]

"token": 从头部获取的token,写在这里

}

# post请求

response = requests.post(url, data=json.dumps(request_payload), headers=headers).text

print(response)

Json 提取信息

# post请求

response = requests.post(url, data=json.dumps(request_payload), headers=headers, timeout=30).text

# 避免爬取过快 设置延迟

# json.dumps 将 Python 对象编码成 JSON 字符串

routeLi

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值