开头先放上效果展示
在命令行输入 python bus.py -i,显示app基本信息,如下:
在命令行输入 python bus.py 438,显示北京438路公交车的位置,如下:
红色的B说明在梅园附近有一辆438公交车,并且会不断刷新。
开发过程
作为一个在北京西二旗郊区上班的苦逼,不敢太早下班,怕领导心里不满,又不敢走太晚,不然赶不上末班公交车了,虽然加班打车能报销,但打不着车!因此实时公交成立必备神器。
目前用的主要两个查公交的途径是车来了微信小程序和北京公交微信公众号,经过用了一段时间发现北京公交的结果是更准的,但是用起来不方便,需要点击多次才能看到结果,如图:
由于想写一个监控公交车的小程序,车快到了能自动提醒。
经过在北京公交官网的一番搜索、分析,发现下面两个可以使用的URL:
获取所有公交车
先看第一个,是官网首页,使用requests去获取,返回的是整个页面的html, 公交车的编号在图中显示的这个dd标签中:
我们可以使用正则表达式结合一些字符串操作,将所有公交车编号获取到一个list中,代码如下:
index_url = r'http://www.bjbus.com/home/index.php'
def get_bus_code_list():
with open('db/bus.txt', 'r', encoding='utf-8') as f:
db_data = json.loads(f.read())
if db_data['time'] >= time() - 12*3600:
print('Getting bus code from db...')
return db_data['data']
resp = requests.get(index_url).content.decode('utf-8')
print('Getting bus code from web...')
bus_code_string = re.findall('
([\s\S]*?)',