只用2秒,轻松获取一线所有城市公交数据!

截止发文,北上广深一共有6510条公交线路

为了获取上面的这些线路信息,我写了一个爬虫,大概用了2秒左右就搞定,真爽!

说出来你们可能不信,别着急,用代码说话,往下看👇

先给一个代码的使用说明,源码和逻辑见后文

1、核心代码

首先是先获取目标城市的公交线路分类信息,需要传入的参数是城市名称

线路分类是在目标城市的首页会显示,获取起来也比较容易。此外,还需要根据线路标签构造访问的二级URL

其中,主函数代码如下:

# 获取公交线路分类信息
city = 'shenzhen'
dic_city = get_bus_list(city)

其次是通过遍历每一个类型的公交线路,获取该线路下的所有的公交路线,并构造每一条公交路线的三级URL,方便后续的信息获取

最后将多个城市的数据合并在一起,就搞定了

# 解析并获取每个线路的数据
df_per_city = get_line_info(dic_city)
df_data = df_data.append(df_per_city, ignore_index=True)

程序运行图如下:

49d803ff30f2d50059c7360b7e6429d4.png

最终爬取的数据如下:

4387543e5bfc6a5760b3df0045165aef.png

北上广深一共有6510条公交路线

2、爬虫思路

获取源码文件请直接在原文链接中回复 公交站点

原文链接👉:只用2秒,轻松爬取北上广深所有公交站点数据)

今天的源码其实之前有写过,但是因为过去时间比较久了,没有和官方的更新同步,所以在运行过程中会出现bug

这次我也是将存在的bug修复了,并优化了部分逻辑,比以前的代码运行速度会更快,更快!

今天爬取的网站上面有各种公交站点、地铁站点、违章、资讯等等数据,小功能做的相当不错。

页面长这样:

e109c5fb92bc725873f6a72e85dd5b4c.png

对应的我们点击热门公交中的某个城市,例如:深圳公交,注意看点击的时候网址栏发生的变化

此时的网址变成了:https://shenzhen.8684.cn/

以此类推,其他城市对应的访问链接想必你会很容易构造出来

点进去之后的页面是这样的:

902e0e516d81dfbd00151d136aab3872.png

从这几种分类类型来看,路线分类那一栏一定是最标准的,而且在后期的分析过程中一定会最有用。

直接打开F12,进行源码分析(或者在某个超链接上点击右键->检查)内容一目了然

定位到 bus-layer depth w120 的这个 div,然后定位到它的第三个 class为‘pl10’ 的子div,这个就是我们我们需要的线路分类

对应上面的网页显示内容,源码都展开之后是这样的:

6ab4e25bd3eaef1433fb85b91de04867.png

其中有两种标签:class="kt" 的span标签,对应的是分类的标题;class='list' 的div标签,子标签对应的是每一个分类的链接 href 和名称,有用的是第二个标签。

正常点击网页上的某一种分类线路,例如:常规线路,注意看点击的时候网址栏发生的变化

此时的网址变成了:https://shenzhen.8684.cn/line1,也就是在之前链接的结尾加上上面的 href 内容

再回到我们的网页上,可以看到显示的公交路线

17153a463459b95080007d91ec8e6be0.png

同样分析源码,内容如下:

3306ae5ea0092c3f39fca37869565605.png

和上面一样的处理思路,在源码中可以直接定位到该类型线路的所有公交线路的详细信息,直接采集即可

代码复现起来也比较简单,但是由于篇幅问题,这里就只展示核心的代码部分

首先是解析公交路线类型,并构造每一个类型的二级URL

# 解析公交路线类型
if '线路分类' in name:soup_a_list = soup_bus.find('div', class_='list')for soup_a in soup_a_list.find_all('a'):text = soup_a.get_text()href = soup_a.get('href')dic_result[text] = "https://{0}.8684.cn{1}".format(city, href)

其次是解析每一条公交线路,包括的字段有:线路类型、线路名称、标记、链接和城市

其中的链接是每一个公交线路的详情链接,里面有该线路的票价、开始时间、结束时间、站点信息等等

核心代码如下:

# 解析每一条公交线路
for soup_a in soup_buslist.find_all('a'):text = soup_a.get_text()href = soup_a.get('href')title = soup_a.get('title')bus_arr.append([key, title, text, "https://{0}.8684.cn{1}".format(city, href), city, '未更新'])

以上是核心源码,这里省去了非核心部分,需要请查看源码文件。

原文链接👉:只用2秒,轻松爬取北上广深所有公交站点数据)

原创不易,希望大家在看完文章的同时,记得一键三连

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/13835.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全国各景点微博签到打卡带经纬度坐标系数据(正文在第二部分)

正文在第二部分,可直接跳过第一段引用的凑字文章。 我是一位数据分析师,很早就开始收集微博签到数据,并且通过自己的整理和分析,发现了这些数据隐藏的巨大商业价值。在此,我想向大家推荐一下这些数据的应用和价值。 微…

“CSDN 丨CDC领航者之夜”启航 AIGC 时代,助力技术管理者打造高效能研发团队

3月25日晚,由CSDN丨上海CDC(城市开发者联盟)和阿里云联合举办的“CDC城市领航者之夜”活动成功举办。 本次活动主题是“AIGC 时代,技术管理者如何打造高效能研发团队”,吸引了近三十位上海本地企业的CTO、技术负责人和…

长按组合键键盘事件(特殊交互界面可隐藏式)

2023.6.1 星期四 长沙 天气晴。在学校毕业的事情弄得差不多了,回到实习公司继续工作并期待转正,这周有一个任务就是在软件设计过程中,设计某些具有特殊功能的交互界面,该界面仅供软件设计内部人员等特殊人群使用,因此通…

开源启智,筑梦未来!第四届OpenI/O启智开发者大会开幕

2023年2月24日,第四届OpenI/O启智开发者大会在深圳顺利开幕。 本次活动由鹏城实验室、新一代人工智能产业技术创新战略联盟(AITISA)主办,OpenI启智社区、中关村视听产业技术创新联盟(AVSA)承办,…

AI落地应用困境,技术如何转化产业价值?

今年,Chat GPT的上线引起了巨大轰动,带来了对人工智能与大数据新的关注热潮。在互联网大数据时代,“AIX”是势不可挡的大趋势。在已有技术的基础上,如何发掘AI大模型背后更多的应用场景,探索AI在商业实践上新的发展可能…

隐私计算头条周刊(3.6-3.12)

开放隐私计算 隐私计算头条周刊 专注隐私计算,释放数据价值 Focus on privacy computing & data value 01 政策聚焦 1.数据最高管理部门——国家数据局成立! 近日,根据国务院关于提请审议国务院机构改革方案的议案,组建国家数…

ChatGPT眼中的“特种兵旅游”

五一旅游季火爆收官,“特种兵旅游”风靡全国年轻人。这种旅游方式以不睡觉、不休息,在短时间内逛遍城市各个著名景点为主打,尽可能多地游览,尽可能充实行程,玩得更刺激更极限。作为年轻人的旅行选择,“特种…

城市C友会【官方牵头更多的线下交流的机会,你有怎样的期待?】

文章目录 🌟 课前小差🌟 长沙线下🌟 C友会你也可以是组织者🌟 线下交流提升价值🌟 官方与抖音合作?🌟 23年动起来🌟 写在最后 🌟 课前小差 哈喽,大家好&…

双系统重装Ubuntu20.04及系统基本配置

文章目录 前言Ubuntu20.04换源安装chrome浏览器安装OneNote安装Wechat QQ Dingtalk参考 前言 笔者从2019年9月份去长沙智能驾驶研究院开始接触ubuntu18.04,在2020年4月份做本科毕业设计的时候也来来回回重装过几次ubuntu,始终没有把自己的重装过程记录下来&#xf…

ChatGPT、新必应让我秒变大神的技巧

最近经常有朋友问我:你使用 ChatGPT 这类大语言模型吗? 当然了,我目前最常用的是「新必应」。 说一说,我为什么使用新必应,原因就是新必应会提供生成内容的来源,这有利于我去自己判断并纠错。 我们都知道&a…

【Springboot系列】springboot扩展点大整理,赶紧收藏起来

🤵‍♂️ 个人主页:香菜的个人主页 ✍🏻作者简介:csdn 认证博客专家,游戏开发领域优质创作者,华为云享专家,2021年度华为云年度十佳博主,2021年度csdn博客之星十四名 🐋 希望大家多多…

GitHub Copilot Labs 体验「收手吧,外面全是 ChatGPT」

本文正在参加 ✍🏻 技术视角深入 ChatGPT 征文活动 相信大家或多或少都体验过了 ChatGPT,或者更进一步,在 IDE 中也装上了对应的插件 不过真正在 coding 中用上的频率有多高呢?可能大多数人都只是尝个鲜然后就忘了,至…

最新ChatGPT GPT-4 NLU实战之文档问答类ChatPDF功能(附ipynb与python源码及视频)——开源DataWhale发布入门ChatGPT技术新手从0到1必备使用指南手册(五)

目录 前言最新ChatGPT GPT-4 自然语言理解NLU实战之文档问答类ChatPDF功能引言ChatGPT 接口Qdrant数据库Embedding存储核心代码测试 其它NLU应用及实战相关文献 参考资料其它资料下载 前言 最近,研究人员开始探索使用ChatGPT来进行文档问答(QA&#xff…

最新ChatGPT GPT-4 自然语言理解NLU与句词分类技术详解(附ipynb与python源码及视频讲解)——开源DataWhale发布入门ChatGPT技术新手从0到1必备使用指南手册(四)

目录 前言最新ChatGPT GPT-4 自然语言理解NLU与句词分类技术详解1. NLU基础1.1 句子级别的分类1.2 Token级别的分类 2. 相关API2.1 LMAS GPT API2.2 ChatGPT Style 相关NLU应用及实战相关文献 参考资料其它资料下载 前言 自然语言理解(NLU)是人工智能&a…

新手小白利用chatgpt解决kali网络配置问题

在启动卡kali的时候发现没有网络 通过ifconfig -a发现没有获取到ip 经过一番查询,尝试用dhclient eth0去手动获取ip,发现成功了 但是每次重启kali都要手动获取一遍ip太麻烦,想着问题还是出在配置文件这里,无奈于小白不懂原理&…

chatgpt赋能python:Python怎么取消tab

Python怎么取消tab 在Python编程中,Tab键是一种重要的缩进方式,但在某些情况下,可能会遇到需要取消Tab缩进的情况。因此,了解如何取消Tab缩进是Python编程中的必经之路。本文将介绍Python的Tab缩进机制以及如何取消Tab缩进的方式…

为什么ClassPathResource可以读取到流?- 第465篇

历史文章(文章累计460) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 S…

javascript截取两个符号之间的字符串(2):lastIndexOf匹配和正则表达式匹配

lastIndexOf匹配和正则表达式匹配 项目需求1.规范的字符串2.不规范的字符串3-1.万能封装3-2.ChatGPT的优化写法4.正则表达式的用法5.补充知识:lastIndexOf的用法 项目需求 javascript中截取字符串中最后一个“/”和“?”之间的内容。 1.规范的字符串 https://tes…

chatgpt赋能Python-python_quine

Python Quine: 在Python编程中理解自我复制的魅力 如果您已经开始了编程学习之旅,您就可能听说过Quine。Quine是一种程序,它可以输出自己的源代码,并被称为自我复制程序。这种程序很少出现在编程实践中,但在计算机科学中却发挥着…

chatgpt赋能python:Python分隔符怎么用?

Python分隔符怎么用? 在Python编程中,分隔符是一个非常重要的概念。它可以帮助我们在代码中分隔不同的元素,从而让代码更加易读和易于管理。在本文中,我们将深入探讨Python中分隔符的使用方法。 什么是分隔符? 在Py…