影刀RPA 公交换乘数据采集:线路站点信息自动录入
影刀RPA 公交换乘数据采集线路站点信息自动录入作者林焱什么情况用什么做本地生活类App、地图工具、或者交通分析的项目需要维护城市公交线路和站点数据。公交线路经常调整——今天新开一条线、明天下一条线改道——数据维护不及时用户体验就差。靠人工登录公交公司官网一条条抄几百条线路维护起来要人命。影刀RPA的思路打开公交查询网站 → 逐线路抓取站点信息 → 和本地数据库对比差异 → 自动更新。怎么做店群矩阵自动化突破运营极限第一步采集线路列表以8684公交网或高德公交API为例。网页抓取方式1. 【打开网页】打开https://{城市}.8684.cn/ 2. 【获取文本】抓取所有公交线路名称和编号 3. 【循环】遍历每条线路 - 【点击】线路链接 - 【获取文本】抓取上行/下行站点列表 - 【获取文本】抓取首末班时间、票价 - 【写入Excel】追加到本地线路表API方式高德地图公交API更稳定importrequests city_code0755# 深圳api_key你的高德API Key# 获取城市公交线路列表urlfhttps://restapi.amap.com/v3/bus/linename?srsv3extensionsallkey{api_key}outputjsoncity{city_code}offset5keywords1resprequests.get(url)linesresp.json()forlineinlines.get(buslines,[]):print(f线路:{line[name]})print(f起点:{line[start_stop]}→ 终点:{line[end_stop]})forstopinline[busstops]:print(f -{stop[name]}({stop[location]}))第二步数据对比与变更检测importpandasaspd# 读入新采集的线路数据new_datapd.read_excel(rD:\transit\new_routes.xlsx)old_datapd.read_excel(rD:\transit\old_routes.xlsx)# 检测新增线路new_linesset(new_data[线路名])-set(old_data[线路名])# 检测变更线路站点列表变化forline_nameinset(new_data[线路名])set(old_data[线路名]):old_stopsold_data[old_data[线路名]line_name][站点列表].iloc[0]new_stopsnew_data[new_data[线路名]line_name][站点列表].iloc[0]ifold_stops!new_stops:old_setset(old_stops.split(,))new_setset(new_stops.split(,))addednew_set-old_set removedold_set-new_setprint(f线路{line_name}变更: {len(added)}站, -{len(removed)}站)第三步自动更新数据库1. 新增线路 → INSERT新记录 2. 变更线路 → UPDATE站点列表和首末班时间 3. 取消线路老数据有、新数据没有→ 标记状态为已停运 4. 第四步生成变更通知【公交线路变更通知】2026-06-28 新增M588路科技园 → 前海 改线M299路取消深大北门站新增科苑路站 停运B688路即日起取消有什么坑坑1公交网站反爬temu店群自动化报活动案例8684等网站有反爬机制高频访问会被封IP。每条线路抓取间隔2-3秒或者使用高德/百度地图API代替。坑2上下行站点不同环形线路的上下行站点可能完全不一样或者单向停靠只有上行有某站。处理时上下行要分开存储不要简单合并。坑3GPS坐标精度不同数据源的GPS坐标精度不同高德用的是GCJ-02坐标系百度用的是BD-09。混用前需要坐标转换。坑4临时调整和永久变更混淆公交公司可能因为道路施工临时改线为期1个月和永久改线要区分记录。通过公告有效期字段判断。总结公交数据维护是个持续的事不是一次性的。影刀的价值是让每月更新一次公交数据这件事从人工两天变成自动两小时关键是异常变更的提醒机制。