基于Python制作公交车站查询系统
1. 系统介绍
公交车站查询系统是一个基于Python编程语言的应用程序,它可以帮助用户查询公交车站的信息。该系统涉及到的主要技术包括Python编程语言、网络爬虫、数据存储等。
该系统主要的功能包括:
- 查询公交车站的名称、位置和车辆信息;
- 将查询结果以文本格式或者HTML格式返回。
2. 系统实现
下面是该系统的实现过程:
2.1 网络爬虫
该系统的第一步是从公交车站网站抓取数据。为了实现这个功能,我们采用Python中的第三方库 requests
和 BeautifulSoup
。
首先通过 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技术站