1. 爬下12306--从0到1
来源:互联网 发布:fifaonline3数据更新 编辑:程序博客网 时间:2024/04/28 15:53
第一章从0到1
今天,天气晴朗,阳光明媚。
你正开开心心地正坐在电脑前办(fa)公(dai)。
这时Boss过来了,通知你周末陪他出趟差,去北京。
让你现在给查查看还有哪些票?
只见你不紧不慢的打开一个命令行终端,有条不紊的敲入:
./fetch_sh-bj.sh 2016-05-14
在Boss还没反应过来时,悠然自得的将电脑屏幕转过去,气定神闲的说,“老大,周末从上海到北京的还有这些车次,每行最后3个数分别是二等座,一等座和商务座的剩余票数,我们订哪趟车?”
cyf@cyf$./fetch_sh-bj.sh 2016-05-14 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed100 17684 100 17684 0 0 157k 0 --:--:-- --:--:-- --:--:-- 181kG142 上海虹桥 北京南 14:21 20:18 无 16 7G144 上海虹桥 北京南 14:32 20:29 无 无 1G18 上海虹桥 北京南 15:00 19:55 无 38 3G146 上海虹桥 北京南 15:05 20:50 无 60 10G148 上海虹桥 北京南 15:34 21:12 54 120 16G20 上海虹桥 北京南 16:00 21:17 193 119 16G150 上海虹桥 北京南 16:05 21:47 321 90 13G152 上海虹桥 北京南 16:20 21:52 560 91 21G22 上海虹桥 北京南 17:00 22:24 221 6 无G154 上海虹桥 北京南 17:14 22:40 612 103 22G156 上海虹桥 北京南 17:19 22:52 258 19 9G44 杭州东 北京南 17:24 23:01 187 109 21G158 上海虹桥 北京南 17:34 23:19 552 99 24G160 上海虹桥 北京南 17:39 23:27 499 92 20T110 上海 北京 17:49 09:25 -- -- --D322 上海 北京南 19:53 07:39 4 -- --D314 上海 北京南 21:12 08:56 1 -- --
有没有觉得这个很酷!
逼格是不是很高!
是不是应该get这项新技能!
那么问题来了?
如果boss不是出差去北京,而是去深圳或西安呢?
有该如何保持这高逼格呢?
为了解决后顾之忧,我们必须弄明白fetch_sh-bj.sh干了哪些事?
然后山寨出个上海到深圳和西安的查票工具:fetch_sh-sz.sh,和fetch_sh-xa.sh。
不过,最终解决方案应该是弄个通用的查票工具fetch12306.sh。
这样查上海到北京的动车票应该是这样的:
./fetch12306.sh 上海 北京 2016-05-14
如果你对这些东东感兴趣,那么相信我,本书一定符合你的口味。
废话不多说,让我们先看看fetch_sh-bj.sh到底干了哪些事。
fetch_sh-bj.sh是一个脚本文件,可以直接使用文本编辑器打开。
#!/bin/bashcurl --insecure --user-agent "Mozilla/5.0 (X11; Linux i686; rv:38.0) Gecko/20100101 Firefox/38.0" "https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=ADULT&queryDate=$1&from_station=SHH&to_station=BJP" | grep -oP "(?<={)[^{}]+(?=})" | sed -r 's/.*station_train_code":"([^"]+).*start_station_name":"([^"]+).*end_station_name":"([^"]+).*start_time":"([^"]+).*arrive_time":"([^"]+).*ze_num":"([^"]+).*zy_num":"([^"]+).*swz_num":"([^"]+).*/\1 \2 \3 \4 \5 \6 \7 \8/'
Unix有这样的设计哲学:
一个程序只做一件事,并做好。
程序要能协作。
程序要能处理文本流,因为这是最通用的接口。
fetch_sh-bj.sh正是这种哲学思想下的产物:
拼装现有的工具,协作完成我们期望的功能。
fetch_sh-bj.sh脚本以竖线(“|”)为单位划分成三部分:
- 第一部分使用curl命令从12306官方网站获取车票信息
- 第二部分使用grep命令将车票信息按照车次分离
- 最后使用sed命令提取并打印需要的信息
通过curl、grep和sed三个工具的协作实现我们想要的功能。
- 1. 爬下12306--从0到1
- 爬下12306--目录
- 从国家统计局爬下来的地区信息
- 用Jsoup写一个简单的爬虫,并把从网页上面爬下的数据保存到数据库中
- 1.1 爬下12306--爬取信息
- 从0到1
- 从0到1
- 从0到1
- 从0到1
- 从0到1
- 从0到1
- 从0到1
- 从《从0到1》开来
- 读《从0到1》
- 从0到1 读书笔记
- 读《从0到1》
- 从0到1-读书笔记
- 《从0到1》读书笔记
- Android系统的Binder机制及其native层应用
- JDK版本兼容性问题以及在Eclipse中设置不同jdk版本编译
- innerText和innerHtml区别的简例
- [BZOJ3223] 文艺平衡树 - splay
- python eval()
- 1. 爬下12306--从0到1
- Java输出1000以内的完数(完数是恰好等于它的因子之和)
- CS231n笔记4-Data Preprocessing, Weights Initialization与Batch Normalization
- IOCP 完成端口
- 9、dwr的入门教程
- strlen和sizeof的区别
- SpringAOP 通知(adivce)- methodIntercepor
- luci map 中的动作
- shipyard使用说明