最近需要查看火车站列车进站时刻
效果图
车次 | 出站 - 到站 | 类型 | 开车时间 | 到站时间 | 运行时间 | 里程 |
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)