最近需要查看火車站列車進站時刻
效果圖
車次 | 出站 - 到站 | 類型 | 開車時間 | 到站時間 | 運行時間 | 里程 |
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)