春運(yùn)渡劫?Python幫你12306搶回家的火車票
前言
年味越來(lái)越淡,但我對(duì)過(guò)年的期待一直沒變。為了理想,離開家鄉(xiāng)。這一路,背上行囊,穿過(guò)人潮,千里迢迢。疲憊也好,激動(dòng)也罷,總有家鄉(xiāng)值得牽掛。
春節(jié)是孟浩然“昨夜斗回北,今朝歲起東”的唏噓,不僅感嘆于“田家占?xì)夂颍舱f(shuō)此年豐”的蹉跎歲月,更多感傷于這一年下來(lái)的“無(wú)祿尚憂農(nóng)”自我調(diào)侃的碌碌無(wú)為;春節(jié)是董必武“共慶新年笑語(yǔ)嘩,紅巖士女贈(zèng)梅花”的對(duì)新年的期待,也有“舉杯互敬屠蘇酒,散席分嘗勝利茶。只有精忠能報(bào)國(guó),更無(wú)樂(lè)土可為家。”的偉大抱負(fù)。
但是,所有的鄉(xiāng)愁和感傷,最好的解藥就是一張火車票。每當(dāng)萬(wàn)事俱備,總是只欠東風(fēng),我依然是被一張5mm厚的火車票攔在了門外。隱隱約約在我眼前出現(xiàn),然后又悄無(wú)聲息的走掉,說(shuō)的就是你,我花錢加速都搶不到的火車票。
大學(xué)四年以接近尾聲,遺憾于愛情的“你好我愛你,再見,對(duì)不起”。這種遺憾經(jīng)過(guò)反復(fù)斟酌和推敲,有那么一刻,我感覺你我之間的距離就是那張“近在眼前,遠(yuǎn)在天邊”可望而不可及的火車票。
由于鄉(xiāng)愁泛濫成災(zāi)、愛情糜爛至極、友情西辭黃鶴,所以阿廣今天教大家如果用Python搶火車票!解決你的鄉(xiāng)情、愛情、友情,說(shuō)不定還有基情?
數(shù)據(jù)介紹
12306官方部分?jǐn)?shù)據(jù)如下:
實(shí)現(xiàn)過(guò)程
注:具有自然語(yǔ)言識(shí)別處理功能
(1)加載頭文件
- from distutils.log import warn as printf
- import sys
- from bosonnlp import BosonNLP
- import yaml
- from os.path import expanduser
- import os
- import collections
- import subprocess
- import datetime
(2)加載配置文件
- home = expanduser("~")
- with open(os.path.join(home,".ibot.yml")) as f:
- config = yaml.load(f)
- bosonnlp_token = config["token"]
(3)解析字符串
- def parse(self, query_string):
- """
- input:
- 1月12號(hào) 濟(jì)南到兗州的高鐵票
- output:
- [{'entity': [[0, 3, 'time'], [3, 4, 'location'], [5, 6, 'location']], # 需要理解實(shí)體出現(xiàn)的模式,這塊需要理解上下文
- 'tag': ['t', 'm', 'q', 'ns', 'p', 'ns', 'ude', 'n', 'n'],
- 'word': ['1月', '12', '號(hào)', '濟(jì)南', '到', '兗州', '的', '硬座', '票']}]
- """
- result = self.nlp.ner(query_string)[0]
- words = result['word']
- tags = result['tag']
- entities = result['entity']
- return (words,entities,tags)
(4)獲得已識(shí)別的實(shí)體
- def get_entity(self,parsed_words,index_tuple):
- """
- 獲取已識(shí)別的實(shí)體
- 采用filter
- 參考 python cookbook部分
- input:
- entities : 二元組
- parsed_words : 解析好的詞組
- """
- return parsed_words[index_tuple[0]:index_tuple[1]]
(5)元組重新命名
- def format_entities(self,entities):
- """
- 給元組命名
- """
- namedentity = collections.namedtuple('namedentity','index_begin index_end entity_name')
- return [namedentity(entity[0],entity[1],entity[2]) for entity in entities]
(6)獲取解析時(shí)間戳
- def get_format_time(self,time_entity):
- """
- output
- {'timestamp': '2018-12-20 23:30:29', 'type': 'timestamp'}
- """
- basetime = datetime.datetime.today()
- result = self.nlp.convert_time(
- time_entity,
- basetime)
- #print(result)
- timestamp = result["timestamp"]
- return timestamp.split(" ")[0]
https://github.com/zandaoguang/MissHome
如何調(diào)用?
- iquery 濟(jì)南 兗州 20190112
- ibot 本周天從濟(jì)南回老家兗州,幫我看下
- ibot 本周五從兗州出發(fā),打算去北京撿垃圾,幫我看下有沒有車票
- ib 這周六從南京回武夷山老家,幫我看下車票
- ...
查詢結(jié)果并搶票
阿廣說(shuō)
自從學(xué)了計(jì)算機(jī),每逢思鄉(xiāng)之情冉冉升起,只能通過(guò)加快敲擊鍵盤的速度來(lái)忘記此時(shí)此刻的烽火三月、家書萬(wàn)金。
盼望著,盼望著,寒假來(lái)了,春天的腳步近了。在我們童顏尚駐時(shí),過(guò)年缺少不了的部門就是走親戚,有魚肉之果腹,亦有無(wú)案牘之勞形。可后來(lái)的后來(lái),我們長(zhǎng)大了,走親戚在無(wú)形之中成了一種“煩惱”。
我們累于東家跑西家躥;我們累于各類繁文縟節(jié);我們累于各式尬聊;我們累于招呼熊孩子;我們累于送禮送紅包;我們累于各種解釋;我們累于被明里奚落、暗里鄙視;我們累于裝體面、撐面子。
明明生活不止眼前的茍且,還有往后余生的茍且,可礙于面子,我們依然裝作不但有詩(shī)和遠(yuǎn)方,還要有錢途的樣子。
如果把過(guò)年比作愛情,那豈是:長(zhǎng)街長(zhǎng),煙花繁,你挑燈回看;短亭短,紅塵輾,我把蕭再嘆?通俗點(diǎn)講,我愿用三生煙火,換你一張通往家鄉(xiāng)的火車票。