就两秒?这说出去谁信啊!

news2025/7/10 4:34:17

文 | xiaoyi(转载请后台联系

关注公众号:小一的学习笔记

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

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

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

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

>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、爬虫思路

获取源码文件请直接在后台回复 公交站点

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

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

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

页面长这样:

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, '未更新'])

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

👆获取源码请在后台回复公交站点

f2010dee1b884e99d159ce186c5a5e09.gif

·················END·················

推荐阅读

•   不好意思,我真的不用花钱

•   害,5秒就搞定的事儿,我以为多复杂呢

•   是的,这三个网站,我天天用

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

我是小一,我们下节见!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Maven环境搭建

目录一、安装及环境配置1.1、下载1.2、Maven目录结构介绍1.3、环境配置二、关于Maven仓库的说明2.1、仓库基本分类(私服仓库和中央仓库均为远程仓库)2.2、本地仓库的默认位置(在setting.xml中配置)2.3、中央仓库连接位置的体现&am…

K8S部署后的使用:dashboard启动、使用+docker镜像拉取、容器部署(ubuntu环境+gpu3080+3主机+部署深度学习模型)

0、k8s安装、docker安装 参考:前两步Ubuntu云原生环境安装,dockerk8skubeedge(亲测好用)_爱吃关东煮的博客-CSDN博客_ubantu部署kubeedge 配置节点gpu: K8S调用GPU资源配置指南_思影影思的博客-CSDN博客_k8s 使用gpu…

机器学习-(手推)线性回归1-最小二乘法(矩阵表达)、几何意义

一、最小二乘法(矩阵表达)误差平均分散每个样本 如下数学推到过程(手推!!!): 数据介绍: D{(x1,y1),(x2,y2),......(xn,yn), Xi(P维列向量&…

留学Essay写作主要靠哪些步骤得分?

期末来了,留学生该怎么办?如何做Essay?下面我们介绍提高写作能力的有效技巧! What should international students do when the end of the semester comes?How to do Essay?Here we introduce effective skills to improve your writing …

[附源码]SSM计算机毕业设计农贸产品交易系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

SSM框架-从JDBC到Mybatis,你今天CRUD了吗?

1 Jdbc 1.1 jdbc入门使用 导入驱动jar包 新建一个目录lib,把jar包放进去 add as library 具体代码 public class JDBCdEMO {public static void main(String[] args) throws Exception{//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连…

vue2 - 基于Export2Excel.js导出Excel案例(js-xlsx插件二次封装使用)

目录一、项目场景二、实现思路三、准备工作1、下载js-xlsx2、下载Export2Excel.js3、下载file-saver和script-loader4、下载mock四、代码实现1、mock数据2、使用Export2Excel.js导入导出excel数据3、App.vue代码五、运行结果六、进阶(复杂表头的导出)一、…

让我们拥抱DataV,感受数据可视化的魅力

最近领导给安排了一个工作,做原型设计。看了37万字的项目需求文档,发现客户对数据可视化要求很高。为什么用户对可视化要求这高呢?可以说,可视化也是这两年的热点了,大数据,可视化,数字孪生频繁…

[HFCTF2020]EasyLogin

有注册登录,先注册一个账号然后登录进去 在登录页面的源代码发现 访问得到 /*** 或许该用 koa-static 来处理静态文件* 路径该怎么配置?不管了先填个根目录XD*/function login() {const username $("#username").val();const password $(…

树形表,自关联表查询技巧

方法一:部门表,部门表中除了自身主键id外,还有另一个字段parentId父id,可以一直递归下去 数据库表: 菜单这样展示就需要我们在接口的返回值中,返回这样的层级数据: [{"id": 1,"…

Mybatis-plus使用教程

注意点:我们在主启动类上需要扫描我们持久层文件下的所以接口 MapperScan("com.kuang.mapper") 配置日志 mybatis-plus.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImplCRUD扩展 1.插入测试 //测试插入Testpublic void testInse…

java之《浅入了解异常》适合预习,复习

🎇🎇🎇作者: 小鱼不会骑车 🎆🎆🎆专栏: 《java练级之旅》 🎓🎓🎓个人简介: 一名专科大一在读的小比特,努力学习编程是我…

就推荐 4 个 yyds 的开源项目

本期推荐开源项目目录:1. 2022 年黑色星期五精选项目2. 力推的 SwiftUI 教程3. 开源的高校微信小程序4. 上班摸鱼用的 IDEA 插件012022 年黑色星期五精选项目没错,这个开源项目叫做 Black Friday。这是一个优质开源项目精选开源项目,盘点了开…

制作一个简单HTML个人网页网页(HTML+CSS)大话西游之大圣娶亲电影网页设计

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

QT中的OpenGLWidget

1、在生成的UI中,通过控件OpenGL Widget来布置相应的空间(后续讲通过promoted widget将此控件与派生的OpenGLWidget进行绑定) 2、添加一个widget类,该类派生于 QOpenGLWidget, QOpenGLFunctions_*_*_Core(*代表版本号…

rabbitmq配置windows authentication(windows account)

rabbitmq配置windows authentication(windows account开启插件配置文件创建一个不需要密码的账号,赋予administrator权限。用windows账号和密码登录rabbitmq加密明文密码创建密钥的文件,添加密钥字符串加密解密用户名密码配置加密后的字符串重启rabbitmq&#xff0c…

做好软件设计让你“事半功倍”

文章目录一、浅谈软件设计二、什么是好的软件设计?三、如何做好软件设计?3.1 设计原则3.1.1 SOLID原则3.1.2 开放-关闭原则(Open–closed principle,OCP)3.1.3 里氏替换原则(Liskov Substitution Principle,LSP)3.1.4 …

数据结构与算法之让我们种下一棵字典树(Java/C++双语言实现)

⭐️前面的话⭐️ 本篇文章将介绍一种经常使用的数据结构——字典树,它又称Tire树,前缀树,字典树,顾名思义,是关于“字典”的一棵树。这个词典中的每个“单词”就是从根节点出发一直到某一个目标节点的路径&#xff0…

四川省部分地区经济发展水平的统计分析

四川省部分地区经济发展水平统计 摘 要 区域经济差异是经济发展过程中的一个普遍问题。区域经济的发展水平不仅影响到政府对各地的管理,也直接影响着社会的安定和人民的生活水平。而四川省区域经济差异更是表现明显,合理分析差异是政府行政管理的一个重…

系统设计-文本内容保存之XSS过滤

点击上方名片关注我,为你带来更多踩坑案例- 引言 -如果你是一个摸爬滚打几年的开发者,那么这个阶段,对系统设计的合理性绝对是衡量一个人水平的重要标准。一个好的设计不光能让你工作中避免很多麻烦,还能为你面试的时候增加很多谈…