基于Python制作公交车站查询系统

yizhihongxing

基于Python制作公交车站查询系统

1. 系统介绍

公交车站查询系统是一个基于Python编程语言的应用程序,它可以帮助用户查询公交车站的信息。该系统涉及到的主要技术包括Python编程语言、网络爬虫、数据存储等。

该系统主要的功能包括:

  • 查询公交车站的名称、位置和车辆信息;
  • 将查询结果以文本格式或者HTML格式返回。

2. 系统实现

下面是该系统的实现过程:

2.1 网络爬虫

该系统的第一步是从公交车站网站抓取数据。为了实现这个功能,我们采用Python中的第三方库 requestsBeautifulSoup

首先通过 requests 库发送HTTP请求,获取公交车站网站的页面数据。然后使用 BeautifulSoup 库解析HTML页面,从中抽取出需要的信息。之后将获取到的数据存储在本地的数据库中。

示例代码:

import requests
from bs4 import BeautifulSoup
import pymysql

def get_stations():
    # 抓取公交车站信息
    url = 'http://www.xxx.com/bus/stations'
    html = requests.get(url).text

    # 解析HTML页面
    soup = BeautifulSoup(html, 'html.parser')
    station_infos = []

    # 从页面中抽取出需要的信息
    for station in soup.find_all('div', class_='station'):
        name = station.find('h3').text
        address = station.find('p', class_='address').text
        buses = []
        for bus in station.find_all('li'):
            buses.append(bus.text)
        station_infos.append({'name': name, 'address': address, 'buses': buses})

    # 将数据存储在本地的数据库中
    conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='bus')
    cur = conn.cursor()
    for station in station_infos:
        cur.execute('insert into station(name, address) values (%s, %s)', (station['name'], station['address']))
        station_id = cur.lastrowid
        for bus in station['buses']:
            cur.execute('insert into bus(name, station_id) values (%s, %s)', (bus, station_id))
    conn.commit()

if __name__ == '__main__':
    get_stations()

2.2 数据查询

在数据库中存储了公交车站的信息以后,我们就可以通过Python编写查询代码来实现查询功能。该系统的查询功能包括查询车站的名称、位置和车辆信息。

示例代码:

import pymysql

def get_station_info(station_name):
    # 查询车站的信息
    conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='bus')
    cur = conn.cursor()
    cur.execute('select id, address from station where name = %s', (station_name,))
    row = cur.fetchone()
    if not row:
        return '未查询到该车站的信息'
    station_id, address = row
    cur.execute('select name from bus where station_id = %s', (station_id,))
    buses = [row[0] for row in cur.fetchall()]
    html = '<h2>车站名称:%s</h2><ul><li>车站位置:%s</li><li>车辆信息:%s</li></ul>' % (station_name, address, ','.join(buses))
    return html

if __name__ == '__main__':
    print(get_station_info('南站'))

3. 总结

通过上述的实现过程,我们可以得到一个基于Python的公交车站查询系统,可以方便地查询公交车站的信息。该系统可以根据需要进行更加复杂的功能扩展,例如,增加对公交车线路的查询,增加地图展示功能等等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于Python制作公交车站查询系统 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • Python查找算法之插补查找算法的实现

    Python查找算法之插补查找算法的实现 插补查找算法是一种高效的查找算法,它是在二分查找算法的基础上进行改进的。插补查算法的基本思想是根据查找值在查找表中的位置进行插值计算,从而确定下一次查找的位置。本文将详细讲解Python查找算法之插补查找算法的实现,包括算法原理、Python实现过程和示例。 算法原理 插补查找算法是一基于二分查找法的改进算法,它的基…

    python 2023年5月13日
    00
  • Python使用graphviz画流程图过程解析

    Python使用graphviz画流程图过程解析 Graphviz是一种流程图绘制工具,可以用于绘制各种类型的图表,包括流程图、组织结构图、时序图等。在Python中,我们可以使用graphviz库来绘制流程图。本文将详细讲解如何使用Python和graphviz库来绘制流程图,并提供两个示例。 安装graphviz 在使用graphviz库之前,我们需要先…

    python 2023年5月15日
    00
  • 使用Python三角函数公式计算三角形的夹角案例

    使用Python三角函数公式计算三角形的夹角的攻略如下: 确认输入和输出在设计计算程序时,首先需要明确输入和输出的变量,以便指定函数的参数和返回值的类型。对于本攻略,我们定义以下变量: 输入:三角形的三个边长a,b,c。 输出:三角形的三个角度A,B,C。 引用Python的数学库由于我们需要采用sin、cos等三角函数,故需要引用python的数学库mat…

    python 2023年6月3日
    00
  • 在Python中marshal对象序列化的相关知识

    下面是关于在 Python 中 marshal 对象序列化的相关知识的完整攻略。 什么是 marshal? marshal 是 Python 中的一个模块,提供了一组函数,用于将 Python 对象序列化成一个类似于字节码的格式,并将其存储到文件中或通过网络传输到另一个进程。marshal 提供了比 Python 内置的 pickle 序列化更快的速度,但不…

    python 2023年6月2日
    00
  • Python threading的使用方法解析

    Python threading的使用方法解析 什么是Python threading Python threading库是关于多线程的一个库,它提供了多线程编程所需的所有基本功能。Python threading库提供了一个Thread类来处理所有线程相关的操作。这个类派生于原始的_thread模块。其提供以下方法: run(): 线程的入口函数,线程启动…

    python 2023年5月13日
    00
  • 利用Python/R语言分别解决金字塔数求和问题

    利用Python/R语言分别解决金字塔数求和问题的完整攻略 问题描述 假设有一个数字金字塔,如下所示: 1 2 3 4 5 6 7 8 9 10 需要计算从顶部到底部的所有路径的和。 Python解决方法 解题思路 读取金字塔数据 从第二行开始遍历金字塔,对于每个元素,计算该元素可到达路径上所有元素的和,将其替换为该和。 示例代码 # 读取金字塔数据 wit…

    python 2023年6月5日
    00
  • 解决python 自动安装缺少模块的问题

    确保安装Pip工具 安装Python扩展模块通常使用Pip命令,但有时该命令不存在,因此首先需要确保Pip已经安装。下载Pip的下载链接为https://bootstrap.pypa.io/get-pip.py ,在命令提示符下执行以下命令安装Pip: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.…

    python 2023年5月18日
    00
  • 将字节数组解码为 un​​icode 时检测空字符串? (Python)

    【问题标题】:Detecting empty string when decoding byte array into unicode? (Python)将字节数组解码为 un​​icode 时检测空字符串? (Python) 【发布时间】:2023-04-07 23:55:01 【问题描述】: 我正在尝试逐字符读取字节数组并将其解码为 un​​icode …

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部