python 制作火车时刻表

火车时刻表是一种方便快捷的查询火车班次信息的工具,那么,如何实现用python实现爬取这些网站的时刻表数据呢

一、访问 http://www.ip138.com/ 查询网的火车时刻表工具:http://qq.ip138.com/train/

选择“列车车次查询”,并使用CHROME开发者工具,可以发现并没有有关数据的XHR包,这是我们选择用正则表达式提取数据。

选择车次,可发现网址格式为:

http://qq.ip138.com/train/<车次号>.htm

标题正则

<h1>.*</h1>

火车类型数据正则:

列车类型:.*&nbsp;

车站名正则

<a href="/train.*" target="_blank">.*</a>

时间数据正则(记得不要第一个):

([0-9]{2}:[0-9]{2})|(---)

通过python的RE模块,可以很方便的查询正则数据

附上源代码(prettytable模块用于显示表格数据,colorama用于设置文本颜色)

import requests
# from urllib import parse
import prettytable
import re
import colorama
def real(l):for i in l:if(i != ''):return ireturn -1code=input("输入班次:\n")
url="http://qq.ip138.com/train/%s.htm"%codedata=requests.get(url)
encode=data.encoding
# print(encode)
if(data.status_code == 404):print("没有查到:%s"%code)exit(1)
data=data.content.decode("gb2312")title=re.search("<h1>.*</h1>",data).group(0)
title=title.replace("<h1>","")
title=title.replace("</h1>","")
start=re.search("从.*开往",title).group(0).replace("从","")\.replace("开往","")
end=re.search("往.*%s"%code.lower(),title).group(0).replace("往","").replace(code.lower(),"")
train_type=re.search("列车类型:.*&nbsp;",data).group(0).replace("&nbsp;","").replace("</td>","").replace("<td>","")
print(title)
print()
print(colorama.Style.BRIGHT+"从%s开往%s"%(start,end)+colorama.Style.RESET_ALL)
print(train_type)
train_station=re.findall("<a href=\"/train.*\" target=\"_blank\">.*</a>",data)
# print("-"*100)
train_time=re.findall("([0-9]{2}:[0-9]{2})|(---)",data)
train_time.pop(0)
# print(train_time)
print("")
tableHead=["车站","到达时间","发车时间","走行时间(小时)"]
for i in tableHead:tableHead[tableHead.index(i)]=colorama.Fore.GREEN+i+colorama.Fore.RESET
tableObj=prettytable.PrettyTable(tableHead)
tableObj.header=True
tableObj.horizontal_char = '-'
tableObj.junction_char='|'
cnt=0
for i in train_station:row=[]j=i.replace("</a>","")e=j.index(">")# print(j[e+1:],#       real(train_time[cnt]),#       real(train_time[cnt+1]),#       real(train_time[cnt+2]))row.append(colorama.Fore.RED+j[e+1:]+colorama.Fore.RESET)# print(colorama.Back.BLACK)row.append(colorama.Fore.LIGHTMAGENTA_EX+real(train_time[cnt]))row.append(real(train_time[cnt+1]))row.append(real(train_time[cnt+2]))print(colorama.Fore.RESET)tableObj.add_row(row)cnt=cnt+3
# print(colorama.Back.BLACK)
print(tableObj)
# print(colorama.Back.RESET)

real模块用于避免findall函数显示不对

仓库:https://gitee.com/pybilly/train_timetable/tree/master/

python 制作火车时刻表相关推荐

  1. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

  2. 用 Python 制作可视化报表,这也太快了!

    作者 | 小F 来源 | 法纳斯特 在数据展示中使用图表来分享自己的见解,是个非常常见的方法. 这也是Tableau.Power BI这类商业智能仪表盘持续流行的原因之一,这些工具为数据提供了精美的图 ...

  3. Get了!用Python制作数据预测集成工具 | 附代码

    作者 | 李秋键 责编 | 晋兆雨 大数据预测是大数据最核心的应用,是它将传统意义的预测拓展到"现测".大数据预测的优势体现在,它把一个非常困难的预测问题,转化为一个相对简单的描述 ...

  4. 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画

    微信改版,加星标不迷路! 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画 作者:neozhaoliang 本文要介绍的是我写的一个有趣的小程序,一个脱离了低级趣味的程序,一个有益于广 ...

  5. Python制作当年第一款手机游戏-贪吃蛇游戏(练习)

    前言: 文章利用Python pygame做一个贪吃蛇的小游戏而且讲清楚每一段代码是用来干嘛的. 据说是贪吃蛇游戏是1976年,Gremlin公司推出的经典街机游戏,那我们今天用Python制作的这个 ...

  6. python制作解压工具_使用python制作一个解压缩软件

    python实现解压缩的重要模块就是--zipfile,其次是os 安装zipfile模块 首先得安装zipfile模块,打开cmd输入一下命令即可安装 pip install zipfile os是 ...

  7. python多张图片合并拼接,python制作sprite图、雪碧图

    python多张图片合并拼接,python制作sprite图.雪碧图 整理图片集 找两个文件夹,yangying和zhaoliying,分别放上照片8张,共16张照片. 创建sprite.py # 多 ...

  8. python制作神经网络_python_deeplearning02_使用python制作神经网络

    20180421 qzd ch02 - 使用python制作神经网络 构建框架 初始化函数 -- 设定输入层节点.隐藏层节点和输出层节点的数量. 训练 -- 学习给定训练集样本后,优化权重(权重--网 ...

  9. 如何用python制作动态二维码,提升表白成功率?

    来源:凹凸数据 本文约1000字,建议阅读5分钟. 本文教你用python制作动态二维码,助你表白成功! 关注数据派THU(DatapiTHU)后台回复"20200520"获取完整 ...

最新文章

  1. 利用SQL索引提高查询速度
  2. 【alibaba-cloud】nacos持久化
  3. 绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来
  4. linux中yum源的配置和使用
  5. 列表刷新+SBJSON+HTTP
  6. java面试题十五 for循环一个题目
  7. 用了30天整理的一些GO语言学习资料,2019请你加油
  8. opencv--图像金字塔
  9. 文字在状态栏上从右往左显示,而且是循环的
  10. 项目管理工具之maven
  11. C语言结构体内存布局问题
  12. Docker 删除所有容器和镜像,从头来过!
  13. matlab实现矩形脉冲串,python中的矩形脉冲串
  14. <C++>初识STL —— 标准模板库
  15. 什么蓝牙耳机颜值高音质好?颜值高音质好的蓝牙耳机推荐
  16. Android mc怎么和win10联机,我的世界实现跨平台联机 Win10玩家可与手机互联
  17. 去掉字符串首尾指定字符
  18. python人脸识别opencv_python中使用Opencv进行人脸识别
  19. Qt界面编程-Qt简介
  20. 计算网格中直线经过的格子

热门文章

  1. Subway -铁路-步行
  2. 两个简单的程序了解fputc(int ch,FILE *fp)和fgetc(FILE *fp)的用法
  3. 党政机关安全信息资源系统
  4. n_person指针一直为空不知是何原因
  5. 小程序图片不显示(在没有错误的情况下)
  6. 两个List集合取交集、并集、差集
  7. Python——凯撒加密
  8. 前端局部自动刷新_通过iframe实现页面的局部刷新
  9. Pregel(图计算)技术原理
  10. 鸿蒙开发访问webapi,Web API接口