เป็นทางรถไฟตรงเวลาหรือไม่

เป็นการส่วนตัวฉันเป็นแฟนของรถไฟ พวกเขาเป็นคนดีแม้ว่าจะช้าวิธีการไปทั่วประเทศ แคนาดาไม่ใช่ผู้สมัครที่ดีที่สุดสำหรับการขนส่งทางรถไฟซึ่งเป็นพื้นที่ที่ค่อนข้างใหญ่ระหว่างชายฝั่งอย่างไรก็ตามโดยวิธีการทางรถไฟใช้บริการรถไฟตามปกติในทางเดินระหว่างวินด์เซอร์เช่นเดียวกับเมืองควิเบก

น่าเสียดายที่ Traveler Rail ต้องผลิตไปยังทางรถไฟอุตสาหกรรมในแคนาดาซึ่งเป็นทริกเกอร์ล่าช้า หลังจากสังเกตว่ารถไฟบางขบวนมีความล่าช้าอย่างมากดูเหมือนว่ามันจะเป็นประโยชน์ในการเข้าใจประสิทธิภาพทั่วไปของแต่ละวิธีการรถไฟ โดยวิธีการไม่ได้ให้ข้อมูลนี้ต่อสาธารณะ

อย่างไรก็ตามพวกเขาจัดหาข้อมูลบางอย่างเกี่ยวกับการมาถึงเช่นเดียวกับเวลาออกเดินทาง ขุดลงในข้อมูลที่นำเสนอด้วยเบราว์เซอร์ประเภทใดก็ได้ที่ตรวจสอบโดยวิธีการของไซต์รถไฟมันเป็นไปได้ที่จะสอบถามรายละเอียดเพิ่มเติมสำหรับข้อมูลการมาถึงที่กำหนดไว้ / จริงที่ผ่านมา ผลที่ได้คือ Trainstats.ca หน้าจอของ Via ในประสิทธิภาพที่รวดเร็ว เข้าร่วมกับฉันหลังจากหยุดพักขณะที่ฉันไปอย่างแน่นอนว่าการทำงานทั้งหมดเช่นเดียวกับวิธีการเลือกแชมป์เมื่อรับตั๋วรถไฟต่อไปของคุณ

รับข้อมูล

ผ่านการจัดหาข้อมูลตามปกติสำหรับปัจจุบันปัจจุบันรวมถึงวันถัดไปในหน้าเงื่อนไขของพวกเขา สิ่งนี้จะช่วยให้เราพัฒนาชุดข้อมูลการเดินทางอย่างไรก็ตามเพียงสักวันหนึ่งในแต่ละครั้ง โชคดีที่เราสามารถยุติการตรวจสอบของ Chrome ได้เช่นเดียวกับการค้นพบคำขอนี้:

http://reservia.viarail.ca/tsi/giTrainStatus.aspx?L=En&tsiccode=via&tsiTrainNumber=87&departuredate=2015-12-01&arrivaldate=2015-12-01&traininstancedate=2015-12-01&t=1449033500354

มีพารามิเตอร์ฉ่ำไม่กี่ที่นี่ TsiTrainNumber ไม่ต้องสงสัยหมายเลขรถไฟที่เรากำลังดู Departuredate คือวันที่รถไฟที่เหลือเช่นเดียวกับ DreamsDate คือเมื่อมันมาถึง TrainInStanceSate เช่นเดียวกันดูเหมือนจะถูกตั้งค่าเป็นวันที่รถไฟที่เหลือ ด้วยสิ่งนี้ในใจถึงเวลาที่จะข้ามไปสู่ ​​Python เช่นเดียวกับการใช้ไลบรารีคำขอที่น่าทึ่งเพื่อสร้างคำขอบางอย่าง

ข้อมูลนี้ประกอบด้วยข้อความ Unicode แบบสองทิศทางที่อาจตีความหรือรวบรวมในวิธีที่แตกต่างจากสิ่งที่ปรากฏด้านล่าง หากต้องการตรวจสอบให้เปิดข้อมูลในโปรแกรมแก้ไขที่เปิดเผยอักขระ Unicode ที่ซ่อนอยู่
ค้นพบมากเพิ่มเติมเกี่ยวกับตัวละคร Unicode แบบสองทิศทาง

แสดงตัวละครที่ซ่อนอยู่

payload = {‘l’: ‘en’,

‘tsiccode’: ‘ผ่าน’,

‘tsiTrainNumber’: train_number,

‘Departuredate’: Trip_date

‘branderdate’: trip_date,

‘TrainInstanceStage’: Trip_date}

r = requests.get (‘http://reservia.viarail.ca/tsi/gettrainstatus.aspx'

Params = Payload)

ดูดิบ

ขอร้อง

จัดขึ้นด้วย github

รหัสนี้ช่วยให้เราสามารถดึงข้อมูลสำหรับหมายเลขรถไฟทุกประเภทในวันที่ทุกประเภท หลังจากการทดสอบบางอย่างเราค้นพบว่าผ่านข้อมูลของ Via กลับไปที่เมษายน 2558 ซึ่งให้ข้อมูลมากกว่า 6 เดือน สำหรับการเดินทางทุกครั้งเราได้รับการจัดเรียงรวมถึงการมาถึงจริงรวมถึงเวลาออกเดินทางสำหรับแต่ละสถานี การรักษาข้อมูลนั้นเราสามารถกำหนดได้อย่างรวดเร็วว่ารถไฟขบวนล่าช้าเป็นอย่างไร

ด้วยข้อมูลเพจที่ดึงเป็น HTML สคริปต์ถูกแฮ็คเข้าด้วยกันโดยใช้ BeautySoup เพื่อแยกค่าทั้งหมด สคริปต์นี้จะสร้างวัตถุสำหรับข้อมูลการเดินทางรวมถึงเก็บไว้ในฐานข้อมูล PostgreSQL ที่ใช้ Sqlalchemy สิ่งนี้ทำให้ง่ายและมีประสิทธิภาพในการเข้าถึงข้อมูลในภายหลัง

ขั้นตอนสุดท้ายคือการทำซ้ำตัวเลขรถไฟทั้งหมดเช่นเดียวกับวันที่จะดึงข้อมูล สคริปต์นี้ใช้ประโยชน์จากลูปซ้อนบางอย่างเพื่อรับข้อมูลรวมถึงเก็บไว้ สคริปต์อีกหนึ่งสคริปต์คว้าข้อมูลของวันก่อนหน้าเช่นเดียวกับเก็บไว้ในฐานข้อมูล นี่คือการตั้งค่าในงาน Cron ดังนั้นฐานข้อมูลจึงยังคงสดใหม่

สร้างเว็บไซต์ A (ราคาถูก)

เว็บไซต์ trainstats.ca
ณ จุดนี้เรามีข้อมูลมาถึงกว่า 12,000 ครั้ง ในขณะที่เราสามารถเรียกใช้การสืบค้นด้วยตนเองเช่นเดียวกับการเขียนสคริปต์เพื่อผลิตแปลงมันสนุกมากที่จะใส่ข้อมูลออนไลน์ ที่บ่งบอกถึงเวลาในการพัฒนาเว็บไซต์ การทำให้สิ่งต่าง ๆ ดูดีบนเว็บไม่ใช่มือขวาของฉันดังนั้น [Phil Everson] เพิ่มขึ้นเพื่อทำการพัฒนาเว็บ

ในการเพิ่มข้อ จำกัด เราต้องการทำให้เว็บไซต์ราคาไม่แพงมากที่สุดเท่าที่จะทำได้ แพลตฟอร์มเป็นข้อเสนอบริการเช่น Heroku วิ่งประมาณ $ 20 ต่อเดือน เซิร์ฟเวอร์ส่วนบุคคลออนไลน์จาก DigitalOcean จะมีค่าใช้จ่ายอย่างน้อย $ 5 ตัวเลือกที่แพงที่สุดคือการสร้างเว็บไซต์แบบคงที่

เว็บเพจแบบคงที่เป็นการเดินทางกลับสู่ยุคสมัยใหม่ คุณสามารถเก็บไฟล์ แต่ไม่สามารถทำการประมวลผลทุกประเภทบนเซิร์ฟเวอร์ โชคดีที่ทำงานได้ดีสำหรับประเภทของข้อมูลที่เราให้บริการ ข้อมูลการเดินทางรวมทั้งหมดอาจถูกส่งออกไปยังไฟล์ JSON เช่นเดียวกับ JavaScript บนฝั่งไคลเอ็นต์สามารถลดลงข้อมูลได้เช่นเดียวกับพล็อตหน้าจอ

เว็บไซต์ของ Trainstats ประกอบด้วย HTML, CSS รวมถึง JavaScript ที่ทำงานในเบราว์เซอร์ของคุณรวมถึงคอลเลกชันของข้อมูล JSON ที่มีข้อมูล ชุดข้อมูลได้รับการสร้างรายวันโดยหนึ่งงาน Cron ซึ่งช่วยให้การประมวลผลทั้งหมดเกิดขึ้นในหนึ่งไปบนคอมพิวเตอร์ระดับภูมิภาค จากนั้นอินเตอร์เฟสบรรทัดคำสั่งของ Amazon Web Services จะใช้เพื่อผลักดันข้อมูลเป็น S3 ซึ่งผู้ใช้สามารถเรียกคืนได้ เนื่องจากชุดข้อมูลมีขนาดเล็กเช่นเดียวกับ S3 นั้นราคาถูกทำให้ค่าใช้จ่ายต่ำกว่าการโฮสต์ปกติ

ผลลัพธ์

แฮ็คนี้ได้รับการพัฒนาเป็นหลักเพื่อความสนุกสนานอย่างไรก็ตามมีการค้นพบที่น่าสนใจเล็กน้อย ในเส้นทางออตตาวาเป็นปกติของฉันไปยังเส้นทางโตรอนโตฉันมีแนวโน้มที่จะเลือกรถไฟที่อยู่ในเวลาที่เหมาะสม 84% เมื่อเทียบกับคนที่ม้วนเข้าสู่สถานีเท่านั้นโดยไม่ชักช้ากับการเดินทาง 28% นักเดินทางคนอื่นบางคนอาจค้นพบสถิติที่เป็นประโยชน์เช่นกัน ไม่ว่าจะด้วยวิธีใดมันเป็นแบบฝึกหัดที่น่าสนใจในการคัดลอกชุดข้อมูลรวมถึงการจัดหาบริการเว็บในราคาถูก

หากคุณกำลังคิดเกี่ยวกับแหล่งที่มาก็ขึ้นอยู่กับ GitHub เพื่อรับ เราขอให้คุณไม่ได้ ddos โดยใช้รางกับมัน

Author: found

Leave a Reply

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