Ist mittels Reling pünktlich?

Ich persönlich bin ein Fan von Zügen. Sie sind eine schöne, wenn auch langsame Methode, um das Land zu erreichen. Kanada ist nicht der beste Kandidat für den Rail Transit, der den ziemlich großen Bereich zwischen Küsten, jedoch über die Rail, jedoch den Routine-Zug-Service in ihrem Korridor zwischen Windsor sowie Quebec-Stadt betreibt.

Leider muss Reisender Rail in der Industrieschiene in Kanada produzieren, was häufig Verzögerungen auslöst. Nach dem Merken, dass einige Züge äußerst regelmäßige Verzögerungen haben, schien es, als wäre es von Vorteil, die typische Leistung von jeweils durch Zug zu verstehen. Mit diesen Daten liefert diese Daten nicht öffentlich.

Sie liefern jedoch einige Daten über Ankunft sowie Abfahrtszeiten. Das Graben in die Daten, die mit einem beliebigen Browsertyp angeboten werden, der das mittels Rail-Standort überprüft, konnte die Vergangenheit für vergangene geplante / tatsächliche Ankunftsdaten anfragen. Das Ergebnis ist Trainstats.ca, ein Bildschirm der VIA-Bildung in zeitnaher Leistung. Begleiten Sie mich nach der Pause, während ich genau darüber arbeitet, wie alles funktioniert, sowie genau, wie Sie einen Champion auswählen können, wenn Sie ein Champion auswählen, wenn Sie Ihr nächstes Zugticket erreichen.

Die Daten bekommen.

VIA versenden Routinedaten für den vorherigen, aktuellen, aktuellen sowie nächsten Tag auf ihrer Bedingungsseite. Dies würde uns dazu bringen, ein Satz von Reisedaten zu entwickeln, jedoch nur eines Tages gleichzeitig. Glücklicherweise können wir Chroms Inspector ethline und entdecken Sie diese Anfrage:

http://reservia.viarail.ca/tsie/gettrainstatus.aspx?l=de&gsiccode=via&tsitrainNumber=87&aRivedate=2015-12-01&arrivaldate=2015-12-01&traininstancedate=2015-12-01&t=1449033500354.

Hier gibt es ein paar saftige Parameter. TsitrainNumber ist zweifellos die Zugnummer, die wir betrachten. Abfahrt ist das Datum, an dem der Zug links ist, sowie ankunft, wenn es ankommt. TraininStanzatate scheint ebenfalls auf das Datum des Zuges des Zuges zu setzen. Im Sinn ist es an der Zeit, in Python zu springen, und nutzen Sie die erstaunliche Anfragen-Bibliothek, um einige Anfragen zu erstellen.

Diese Daten bestehen aus bidirektionalem Unicode-Text, der auf andere Weise interpretiert oder kompiliert werden kann als das, was unten erscheint. Um zu überprüfen, öffnen Sie die Daten in einem Editor, der verborgene Unicode-Zeichen aussetzt.
Entdecken Sie viel mehr über bidirektionale Unicode-Charaktere

versteckte Zeichen zeigen

payload = {‘l’: ‘de’,

‘TSICCODE’: ‘VIA’,

‘TsitrainNumber’: train_number,

‘Abfahrt’: trip_date,

‘Ankunftsdate’: trip_date,

‘TraininstanceATE’: trip_date}

R = Anfragen.Get (‘http://reservia.viarail.ca/tsi/gettTrainstatus.aspx19;,

Parameter = Nutzlast)

Raw ansehen.

anfrage.py.

Mit Github gehalten

Mit diesem Code können wir Daten für jede Art von Zugnummer an jedem Datum abrufen. Nach einigen Tests entdeckten wir, dass die Daten von VIA April 2015 zurückgeht, was uns über 6 Monate Daten ergibt. Für jede Reise erhalten wir die arrangierten sowie tatsächlichen Ankunft sowie Abfahrtszeiten für jede Station. Um diese Informationen zu erhalten, können wir schnell genau feststellen, wie sich die Züge verzögert haben.

Wenn die als HTML abgerufenen Seitendaten, die als HTML geholt wurde, wurde ein Skript mit der BeautifulSoup zusammengeholt, um alle Werte zu extrahieren. Dieses Skript erzeugt dann Objekte für die Auslösedaten und speichert sie in einer PostgreSQL-Datenbank, die SQLALCHEMY verwendet. Dies macht es einfach und effektiv, um den Zugriff auf die Daten später zu erlangen.

Der letzte Schritt bestand darin, alle Zugnummern sowie Tage zu iterieren, um die Daten zu ziehen. Dieses Skript nutzt nur einige verschachtelte Loops, um die Daten zu ermitteln, und speichern Sie sie. Ein weiteres Skript packt die Daten des vorherigen Tages sowie speichert sie in der Datenbank. Dies ist auf einem Cron-Job eingerichtet, sodass die Datenbank frisch bleibt.

Bau einer (billigen) Website

Trainstats.ca-Website.
Zu diesem Zeitpunkt haben wir Ankunftsdaten über 12.000 Fahrten. Während wir die Anfragen manuell ausführen können, und Komponieren von Skripts, um PLOTs herzustellen, ist es viel mehr Spaß, die Daten online zu stellen. Das zeigt an, dass es Zeit ist, eine Website zu entwickeln. Die Dinge sehen, die auf dem Web großartig aussehen, ist nicht meine Forte, also sprang [Phil Everson] ein, um eine Webentwicklung zu erledigen.

Um eine Einschränkung hinzuzufügen, wollten wir den Standort so erschwinglich wie möglich machen, um zu laufen. Plattform als Serviceangebot wie Heroku lief etwa 20 US-Dollar pro Monat. Ein Online-Personalserver aus DigitalOcean würde mindestens 5 US-Dollar aufgaben. Die kostengünstigste Wahl bestand darin, eine statische Site zu erstellen.

Eine statische Webseite ist eine Reise zurück in die Tage der Geocities. Sie können Dateien halten, können jedoch keine Art der Verarbeitung auf dem Server ausführen. Glücklicherweise funktionierte dies gut für die Art der Daten, die wir zur Verfügung gestellt haben. Alle aggregierten Auslösedaten können in JSON-Dateien exportiert werden, sowie JavaScript auf der Clientseite können die Daten sowie Bildschirmakten auf der Client-Seite stecken.

Das Trainstats-Site besteht aus einigen HTML, CSS sowie JavaScript, die in Ihrem Browser ausgeführt werden, sowie eine Sammlung von JSON-Daten mit den Daten. Der Datensatz wird täglich generiertMit einem weiteren CRON-Job, mit dem die gesamte Verarbeitung in einem regionalen Computer auf einmal auftritt. Dann wird die Amazon Web Services-Befehlszeilenschnittstelle verwendet, um die Daten auf S3 zu drücken, wo sie von Benutzern abgerufen werden kann. Da die Datensätze klein sind, und S3 ist billig, dies macht die Kosten niedriger als das normale Hosting.

Die Ergebnisse

Dieser Hack wurde hauptsächlich zum Spaß entwickelt, es hat jedoch ein paar faszinierende Erkenntnisse. Auf meiner normalen Ottawa nach Toronto Route habe ich viel wahrscheinlicher, dass ich den Zug eher den Zug auswählen kann, der nicht rechtzeitig 84% der Zeit ist, gegenüber demjenigen, der nur ohne Verzögerung von 28% der Reisen in die Station rollt. Einige andere Reisende können auch die von Ihnen vorteilhaften Statistiken entdecken. In jedem Fall war es eine faszinierende Übung, um ein Datensatz aufzukratzen und einen Webservice auf dem günstigen zu liefern.

Wenn Sie an die Quelle nachdenken, ist es alles auf dem Github für die Einnahme. Wir fordern uns bitte an, dass Sie nicht mit der Schiene mit ihm nicht ddosen.

Leave a Reply

Your email address will not be published. Required fields are marked *