Bagaimana membangun produk digital yang sukses di dunia digital Uncategorized Apakah dengan cara kereta api tepat waktu?

Apakah dengan cara kereta api tepat waktu?

Secara pribadi, saya penggemar kereta. Mereka adalah metode yang baik, meskipun lambat, untuk berkeliling negara. Kanada bukan kandidat terbaik untuk transit kereta api, menyediakan area yang agak besar antara pantai, namun melalui kereta api mengoperasikan layanan kereta rutin di koridor mereka antara Windsor serta Kota Quebec.

Sayangnya, rel traveler harus memproduksi ke rel industri di Kanada yang biasanya memicu keterlambatan. Setelah memperhatikan bahwa beberapa kereta memiliki keterlambatan yang sangat teratur, sepertinya akan bermanfaat untuk memahami kinerja khas masing-masing dengan cara kereta. dengan cara tidak memasok data ini secara publik.

Namun, mereka menyediakan beberapa data tentang kedatangan serta waktu keberangkatan. Menggali ke dalam data yang ditawarkan dengan semua jenis peramban yang memeriksa melalui situs kereta api, dimungkinkan untuk pertanyaan untuk data kedatangan yang dijadwalkan / aktual sebelumnya. Hasilnya adalah trainstats.ca, layar via dalam kinerja yang tepat waktu. Bergabunglah dengan saya setelah istirahat ketika saya membahas bagaimana ini semua bekerja, serta persis bagaimana memilih juara ketika mendapatkan tiket kereta berikutnya.

Mendapatkan data

Via Apakah memasok data rutin untuk hari sebelumnya, saat ini, serta hari berikutnya di halaman kondisi mereka. Ini akan membiarkan kami mengembangkan satu set data perjalanan, namun hanya suatu hari nanti. Untungnya, kami dapat menghentikan inspektur Chrome serta menemukan permintaan GET ini:

http://reservia.viarail.ca/tssi/gettrainstatus.aspx?l=en&tsiccode=via&ttitrainnumber=87&departuredate=2015-12-01&arvaldate=2015-12-01&traininstensicate=2015-12-01&t=1449033500354.

Ada beberapa parameter berair di sini. TsitrainNumber tidak diragukan lagi nomor kereta yang kita lihat. DEVARTERSEDATE ADALAH TANGGAL LEACH KIRI, SEBAGAI KATAINDATE adalah ketika tiba. TraininSededate juga tampaknya akan diatur ke kencan kereta kiri. Dengan mengingat hal ini, saatnya untuk melompat ke Python serta memanfaatkan perpustakaan permintaan luar biasa untuk membuat beberapa permintaan.

Data ini terdiri dari teks Unicode dua arah yang dapat ditafsirkan atau dikompilasi dengan cara yang berbeda dari apa yang muncul di bawah ini. Untuk meninjau, membuka data dalam editor yang memaparkan karakter Unicode tersembunyi.
Temukan lebih banyak tentang karakter Unicode Bidirectional

Tampilkan karakter tersembunyi

payload = {‘l’: ‘en’,

‘Tsiccode’: ‘via’,

‘Tsitrainnumber’: train_number,

‘Departuredate’: Trip_date,

‘Kedatangan’: trip_date,

‘Traininstance’: trip_date}

r = requests.get (‘http://reservia.viarail.ca/tssi/gettrainstatus.aspx&#39 ;,

params = payload)

Lihat RAW.

permintaan.py.

dipegang dengan github

Kode ini memungkinkan kami untuk mengambil data untuk semua jenis nomor kereta pada semua jenis tanggal. Setelah beberapa pengujian, kami menemukan bahwa data Via kembali ke April 2015, yang memberi kami lebih dari 6 bulan data. Untuk setiap perjalanan, kami mendapatkan waktu kedatangan yang diatur serta aktual serta waktu keberangkatan untuk setiap stasiun. Menyimpan informasi itu, kita dapat dengan cepat menentukan dengan tepat seberapa tertunda kereta.

Dengan data halaman diambil sebagai HTML, skrip diretas bersama menggunakan CantikSoup untuk mengekstrak semua nilai. Script ini kemudian menghasilkan objek untuk data perjalanan serta menyimpannya di database postgresql yang memanfaatkan SQLALCHEMY. Ini membuatnya sederhana maupun efektif untuk mendapatkan akses ke data nanti.

Langkah terakhir adalah mengulangi semua nomor kereta dan juga hari untuk menarik data. Script ini hanya memanfaatkan beberapa loop bersarang untuk mendapatkan data serta menyimpannya. Satu lagi skrip meraih data hari sebelumnya serta menyimpannya di database. Ini diatur pada pekerjaan cron, jadi basis data tetap segar.

Membangun situs web (murah)

Situs Web Trainstats.ca
Pada titik ini, kami memiliki data kedatangan pada lebih dari 12.000 perjalanan. Meskipun kami dapat menjalankan permintaan secara manual serta menulis skrip untuk menghasilkan plot, jauh lebih menyenangkan untuk menempatkan data secara online. Itu menunjukkan saatnya untuk mengembangkan situs web. Membuat segalanya tampak hebat di web bukan keahlian saya, jadi [Phil Everson] melompat untuk melakukan pengembangan web.

Untuk menambahkan kendala, kami ingin membuat situs itu terjangkau mungkin untuk dijalankan. Platform sebagai penawaran layanan seperti Heroku berlari sekitar $ 20 sebulan. Server pribadi online dari Digitalocean akan mengorbankan setidaknya $ 5. Pilihan paling murah adalah membuat situs statis.

Halaman web statis adalah perjalanan kembali ke hari-hari geocities. Anda dapat menyimpan file, namun tidak dapat melakukan semua jenis pemrosesan di server. Untungnya, ini bekerja dengan baik untuk jenis data yang kami sediakan. Semua data perjalanan agregat dapat diekspor ke file JSON, serta JavaScript di sisi klien dapat ton data serta plot layar.

Situs Stainstats terdiri dari beberapa HTML, CSS, serta JavaScript yang berjalan di browser Anda, serta kumpulan data JSON dengan data. Dataset dihasilkan setiap hariDengan satu lagi pekerjaan cron, yang memungkinkan semua pemrosesan terjadi pada satu saat pergi pada komputer regional. Kemudian antarmuka baris perintah layanan Web Amazon digunakan untuk mendorong data ke S3, di mana ia dapat diambil oleh pengguna. Karena dataset kecil, serta S3 murah, ini membuat biaya lebih rendah dari hosting normal.

Hasil

Peretasan ini terutama dikembangkan untuk bersenang-senang, namun memiliki beberapa temuan yang menarik. Pada Ottawa normal saya ke rute Toronto, saya jauh lebih mungkin untuk memilih kereta yang tepat waktu 84% dari waktu, versus yang hanya bergulir ke stasiun tanpa penundaan 28% dari perjalanan. Beberapa wisatawan lain dapat menemukan statistik bermanfaat juga. Either way, itu adalah latihan yang menakjubkan dalam menggores dataset serta memasok layanan web pada yang murah.

Jika Anda berpikir tentang sumbernya, semuanya ada di GitHub untuk pengambilan. Kami dengan baik meminta Anda tidak DDOS dengan cara rel dengannya.

Leave a Reply

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