用python制作火車站列車進站時刻表


最近需要查看火車站列車進站時刻
 
效果圖

 

 

一、搜集數據
 
只有始發站和終點站信息,並沒有到無錫站時間,只能根據每個車次獲取
  車次 出站 - 到站 類型 開車時間 到站時間 運行時間 里程
  D306/D307
 無錫
動車組 00:02 10:03 10小時4分 1355
  K5562
 無錫
  亳州
快速 00:20 11:21 11小時5分 571
  K5601/K5604
 無錫
  寧波
快速 00:25 07:06 6小時46分 203
  K8372
 無錫
  徐州
快速 00:26 08:42 8小時20分 563
  T136
 無錫
  濟南
特快 00:32 10:14 9小時46分 842
  K8386/K8387
 無錫
  阜陽
快速 00:51 08:48 8小時0分 571
from django.http import HttpResponse
from django.http.response import JsonResponse
from django.shortcuts import render
from coviddata.models import traintime
import urllib.request
import requests
import re
from bs4 import BeautifulSoup
import datetime
from distutils.filelist import findall
# 數據庫操作
def getTrainData():
    # 初始化
    trainid=""
    htmlcontext= ""
    list = traintime.objects.all()
    #list = traintime.objects.order_by('trainid')[0:1]
    for var in list:
        trainid = var.trainid + ""
        webname="http://search.huochepiao.com/checi/"+trainid
        response = requests.get(webname)
        # 類文件對象支持 文件對象的操作方法,如read()方法讀取文件全部內容,返回字符串
        htmlcontext = response.content
        htmlcontext = str(htmlcontext, 'gbk')
        soup = BeautifulSoup(htmlcontext, "html.parser")
        for tag in soup.find_all('a', href='http://search.huochepiao.com/chezhan/wuxi'):
            parent=tag.parent.parent
            tds=parent.find_all('td')
            var.arrivetime = tds[3].get_text()
        tag=soup.find('td',text='始發站')
        parent = tag.parent.parent
        tds = parent.find_all('td')
        var.startstation = tds[8].get_text()
        var.endstation=tds[10].get_text()
        var.save()
利用requests逐個獲取車次信息
利用soup找到到達無錫站時間
利用model traintime 保存到數據庫
 
二、展示數據
# -*- coding: utf-8 -*-
from django.http import HttpResponse
from django.http.response import JsonResponse
from django.shortcuts import render
from coviddata.models import traintime
import urllib.request
import requests
import re
from bs4 import BeautifulSoup
import datetime
from distutils.filelist import findall
def gettrainlist(request):
    request.encoding = 'utf-8'
    htmlcontext=""
    context = {}
    start_time = datetime.time(0, 0, 0)
    end_time = datetime.time(23, 59, 59)
    #根據四個班次分時刻顯示
    if 'q' in request.GET and request.GET['q']:
        name=request.GET['q']
        url=name
        if (name=="1"):
            start_time = datetime.time(0,0,0)
            end_time = datetime.time(5,59,59)
        elif (name=="2"):
            start_time = datetime.time(6, 0, 0)
            end_time = datetime.time(11, 59, 59)
        elif (name == "3"):
            start_time = datetime.time(12, 0, 0)
            end_time = datetime.time(17, 59, 59)
        elif (name == "4"):
            start_time = datetime.time(18, 0, 0)
            end_time = datetime.time(23, 59, 59)
        else:
            start_time = datetime.time(18, 0, 0)
            end_time = datetime.time(23, 59, 59)
    else:
        start_time = datetime.time(0, 0, 0)
        end_time = datetime.time(23, 59, 59)
        #list = communitydata.objects.filter(districtname__icontains=name)
    list = traintime.objects.filter(arrivetime__range=(start_time, end_time)).order_by('arrivetime')
    context['trainlist'] = list
    return render(request, 'trainlist.html', context)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM