Python 爬虫-爬取阿里旅行特价机票信息(2)

2023-11-06 03:10

本文主要是介绍Python 爬虫-爬取阿里旅行特价机票信息(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上接之前的(1)


数据分析

这里我查询的是 8月2号到 8月16号的特价机票信息,后面的那一串callback等可以不用改。网址在这里

从数据中可以看出来,需要的数据主要集中在 Key值为‘flights’的字典里,接下来要做的事情就简单了。

这里写图片描述

网页数据获取

首先留出填入起始时间和结束时间的接口,然后就要去打开相应的网址。通过urllib的urlopen函数,我们就获得了这个网址的json数据。
因为数据里包含了‘json1815’的数据。

虽然在写的时候发现好像是不用去处理的,但是出于懒惰就不去改代码了,顺便在这里小秀一下正则。

之后便通过json.loads,把字符串(str)转化成为 字典(dict)格式。然后直接去获取key为‘flights’的数据集即可。

def getdate(startdate, enddate):url = 'https://sjipiao.alitrip.com/search/cheapFlight.htm?startDate=%s&endDate=%s&' \'routes=BJS-&_ksTS=1469412627640_2361&callback=jsonp1815&ruleId=99&flag=1' % (startdate, enddate)price_html = urllib.urlopen(url).read().strip()pattern = r'jsonp1815\(\s+(.+)\)'re_rule = re.compile(pattern)json_data = re.findall(pattern, price_html)[0]price_json = json.loads(json_data)flights = price_json['data']['flights']  # flights Inforeturn flights

特价机票信息输出

按照字典里数据排列的方式,把数据按顺序打印出来即可。

# 输出所有航班信息
def print_all_trip(flights):for province in flights:print_trip(flights[province], province)# 输出目的地航班信息
def print_trip(flight, province):print '===============Province:%s===============' % provincefor f in flight:source = '从:%s-' % f['depName']dest = '到:%s\t' % f['arrName']price = '\t价格:%s%s(折扣:%s)\t' % ((f['price']), f['priceDesc'], f['discount'])depart_date = '\t日期:%s' % f['depDate']print source + dest + price + depart_date

整体代码调用

# -*- coding: utf-8 -*-
import datetime
import json
import urllib
import re
import sysdefault_encoding = 'utf-8'
reload(sys)
sys.setdefaultencoding(default_encoding)# 填上上面写的3个函数
# ...
# ...
# ...delay = int(raw_input('Enter the Day after: '))
today = datetime.date.today()
enddate = today + datetime.timedelta(delay)
endstr = str(enddate)
print str(today) + ' To ' + endstrflights = getdate(today, enddate=endstr)
print_all_trip(flights)

待加功能:
因为目的地不一定有特价机票,然而对应附近的城市可能会有。于是根据自己选定的目的地,来查询对应省份里其他城市的航班信息,支持多个省份一起查询。

这篇关于Python 爬虫-爬取阿里旅行特价机票信息(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/354138

相关文章

Python中edge-tts实现便捷语音合成

《Python中edge-tts实现便捷语音合成》edge-tts是一个功能强大的Python库,支持多种语言和声音选项,本文主要介绍了Python中edge-tts实现便捷语音合成,具有一定的参考价... 目录安装与环境设置文本转语音查找音色更改语音参数生成音频与字幕总结edge-tts 是一个功能强大的

使用Python和PaddleOCR实现图文识别的代码和步骤

《使用Python和PaddleOCR实现图文识别的代码和步骤》在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等,PaddleOCR是百度开源的一款强大的OCR工具包,它集成了... 目录一、引言二、环境准备2.1 安装 python2.2 安装 PaddlePaddle2.3 安装

Python+PyQt5开发一个Windows电脑启动项管理神器

《Python+PyQt5开发一个Windows电脑启动项管理神器》:本文主要介绍如何使用PyQt5开发一款颜值与功能并存的Windows启动项管理工具,不仅能查看/删除现有启动项,还能智能添加新... 目录开篇:为什么我们需要启动项管理工具功能全景图核心技术解析1. Windows注册表操作2. 启动文件

Python datetime 模块概述及应用场景

《Pythondatetime模块概述及应用场景》Python的datetime模块是标准库中用于处理日期和时间的核心模块,本文给大家介绍Pythondatetime模块概述及应用场景,感兴趣的朋... 目录一、python datetime 模块概述二、datetime 模块核心类解析三、日期时间格式化与

Java调用Python的四种方法小结

《Java调用Python的四种方法小结》在现代开发中,结合不同编程语言的优势往往能达到事半功倍的效果,本文将详细介绍四种在Java中调用Python的方法,并推荐一种最常用且实用的方法,希望对大家有... 目录一、在Java类中直接执行python语句二、在Java中直接调用Python脚本三、使用Run

使用Python开发Markdown兼容公式格式转换工具

《使用Python开发Markdown兼容公式格式转换工具》在技术写作中我们经常遇到公式格式问题,例如MathML无法显示,LaTeX格式错乱等,所以本文我们将使用Python开发Markdown兼容... 目录一、工具背景二、环境配置(Windows 10/11)1. 创建conda环境2. 获取XSLT

Python如何调用指定路径的模块

《Python如何调用指定路径的模块》要在Python中调用指定路径的模块,可以使用sys.path.append,importlib.util.spec_from_file_location和exe... 目录一、sys.path.append() 方法1. 方法简介2. 使用示例3. 注意事项二、imp

PyQt5+Python-docx实现一键生成测试报告

《PyQt5+Python-docx实现一键生成测试报告》作为一名测试工程师,你是否经历过手动填写测试报告的痛苦,本文将用Python的PyQt5和python-docx库,打造一款测试报告一键生成工... 目录引言工具功能亮点工具设计思路1. 界面设计:PyQt5实现数据输入2. 文档生成:python-

Python中Flask模板的使用与高级技巧详解

《Python中Flask模板的使用与高级技巧详解》在Web开发中,直接将HTML代码写在Python文件中会导致诸多问题,Flask内置了Jinja2模板引擎,完美解决了这些问题,下面我们就来看看F... 目录一、模板渲染基础1.1 为什么需要模板引擎1.2 第一个模板渲染示例1.3 模板渲染原理二、模板

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.