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

基于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中列表操作的使用方法,并提供多个示例说明。 创建列表 在Python中,可以使用方括号[]或list()函数来创建一个列表。以下是一个示例代码,演示如何创建一个列表: …

    python 2023年5月13日
    00
  • Python 数据类型–集合set

    当我们需要对一组数据进行去重、集合运算等操作时,可以使用 Python 中的“集合”(Set)。本文将对 Python 中的集合(Set)数据类型进行详细讲解。 什么是 Set? Python 的“集合”(Set)是无序的、不重复的集合数据类型。集合类似于列表(list)或元组(tuple),但它们是不同的数据类型。列表和元组中的元素是有序并可以重复;而集合…

    python 2023年5月13日
    00
  • Python获取指定字符前面的所有字符方法

    下面是Python获取指定字符前面的所有字符方法的完整攻略。 1. 使用字符串的切片功能 在Python中,可以通过字符串的切片功能获取指定字符前面的所有字符。具体来说,可以使用字符串的find()方法查找指定字符的位置,然后通过切片语法获取该位置前面的所有字符。 示例如下: str1 = "Hello World" pos = str1…

    python 2023年6月5日
    00
  • Python实现Youku视频批量下载功能

    Python可以使用第三方库实现Youku视频批量下载功能。以下是一个基于you-get库的示例攻略,演示如何使用Python实现Youku视频批量下载功能。 1. 安装you-get库 you-get是一个开源的命令行工具,可以下载各种视频网站的视频。我们可以使用以下命令安装you-get库: pip install you-get 2. 获取Youku视…

    python 2023年5月15日
    00
  • 何时在 Python 中选择 collections.Iterable 或 ‘__iter__’ 属性? [复制]

    【问题标题】:When to choose collections.Iterable or ‘__iter__’ attribute in Python? [duplicate]何时在 Python 中选择 collections.Iterable 或 ‘__iter__’ 属性? [复制] 【发布时间】:2023-04-07 20:57:01 【问题描述】…

    Python开发 2023年4月8日
    00
  • python连接sql server乱码的解决方法

    当使用Python连接SQL Server时,可能会遇到乱码问题。例如,在查询中文数据时,可能会出现乱码的情况。解决这个问题的方法有两种: 方法一:使用pyodbc连接SQL Server pyodbc是一个Python库,用于连接数据库。有时使用pyodbc会比使用SQLAlchemy等其他第三方库更为简单。 安装pyodbc 打开终端或命令行工具 输入:…

    python 2023年5月20日
    00
  • Python中内置数据类型list,tuple,dict,set的区别和用法

    以下是详细讲解“Python中内置数据类型list,tuple,dict,set的区别和用法”的完整攻略。 Python中内置数据类型 在Python中,有四种常见的内置数据类型,分别是list、tuple、dict和set。下面将分别介绍它们的区别和用法。 list list是Python中最常用的数据类型之一,它是一种有序的可变序列,可以存储任意类型的数…

    python 2023年5月13日
    00
  • pytest基本用法简介

    下面是关于”pytest基本用法简介”的完整攻略。 一、什么是pytest Pytest是一个功能强大的Python测试框架,其中所提供的主要特性包括自动化测试、可插拔性、测试时间短、支持参数化等。它可以扩展unittest测试框架的功能,同时还能够使用更加Python风格的语法实现测试用例的编写。Pytest是Python中非常受欢迎的测试框架之一,由于其…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部