iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >利用python爬取城市公交站点
  • 216
分享到

利用python爬取城市公交站点

2024-04-02 19:04:59 216人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录页面分析爬虫数据清洗excel PQ 数据清洗python数据清洗QGIS坐标纠偏导入csv文件坐标纠偏总结利用Python爬取城市公交站点 页面分析 https://guiya

利用Python爬取城市公交站点

页面分析

https://guiyang.8684.cn/line1

爬虫

我们利用requests请求,利用BeautifulSoup来解析,获取我们的站点数据。得到我们的公交站点以后,我们利用高德api来获取站点的经纬度坐标,利用pandas解析JSON文件。接下来开干,我推荐使用面向对象的方法来写代码。


import requests
import json
from bs4 import BeautifulSoup
import pandas as pd
​
​
class bus_stop:
 ## 定义一个类,用来获取每趟公交的站点名称和经纬度
 def __init__(self):
 self.url = 'Https://guiyang.8684.cn/line{}'
 self.starnum = []
 for start_num in range(1, 17):
 self.starnum.append(start_num)
 self.payload = {}
 self.headers = {
 'Cookie': 'JSESSioNID=48304F9E8D55A9F2F8ACC14B7EC5A02D'}
 ## 调用高德api获取公交线路的经纬度
 ### 这个key大家可以自己去申请
 def get_location(self, line):
 url_api = 'https://restapi.amap.com/v3/bus/linename?s=rsv3&extensions=all&key=559bdffe35eec8c8f4dae959451d705c&output=json&city=贵阳&offset=2&keyWords={}&platfORM=JS'.format(
 line)
 res = requests.get(url_api).text
 # print(res) 可以用于检验传回的信息里面是否有自己需要的数据
 rt = json.loads(res)
 dicts = rt['buslines'][0]
 # 返回df对象
 df = pd.DataFrame.from_dict([dicts])
 return df
 ## 获取每趟公交的站点名称
 def get_line(self):
 for start in self.starnum:
 start = str(start)
 # 构造url
 url = self.url.format(start)
 res = requests.request(
 "GET", url, headers=self.headers, data=self.payload)
 soup = BeautifulSoup(res.text, "lxml")
 div = soup.find('div', class_='list clearfix')
 lists = div.find_all('a')
 for item in lists:
 line = item.text  # 获取a标签下的公交线路 
 lines.append(line)
 return lines
​
​
if __name__ == '__main__':
 bus_stop = bus_stop()
 stop_df = pd.DataFrame([])
 lines = []
 bus_stop.get_line()
 # 输出路线
 print('一共有{}条公交路线'.format(len(lines)))
 print(lines)
 # 异常处理
 error_lines = []
 for line in lines:
 try:
 df = bus_stop.get_location(line)
 stop_df = pd.concat([stop_df, df], axis=0)
 except:
 error_lines.append(line)

 # 输出异常的路线 
 print('异常路线有{}条公交路线'.format(len(error_lines))) 
 print(error_lines)

 # 输出文件大小 
 print(stop_df.shape)
 stop_df.to_csv('bus_stop.csv', encoding='gbk', index=False)

数据清洗

我们先来看效果,我需要对busstops列进行清洗。我们的总体思路,分列->逆透视->分列。我会接受两种方法,一是Excel PQ,二是python。

Excel PQ 数据清洗

这一方法完全利用PQ,纯界面操作,问题不大,所以我们看看流程就可以了,核心步骤就是和上面一样的。

python数据清洗


## 我们需要处理的busstops列和ID列
data = stop_df[['id','busstops']]
data.head()


## 字典或者列表分列
df_pol = data.copy()
### 设置索引列
df_pol.set_index('id',inplace=True)
df_pol.head()


## 逆透视
### 释放索引
df_pol.reset_index(inplace=True)
### 逆透视操作
df_pol_ps = df_pol.melt(id_vars=['id'], value_name='busstops')
df_pol_ps.head()


## 删除空行
df_pol_ps.dropna(inplace=True,axis=0)
df_pol_ps.shape 


## 分列
### 设置line_id
df_parse['line_id'] = df_pol_ps['id']
df_parse = df_pol_ps['busstops'].apply(pd.Series)
df_parse

我这里补充一下,我们一般还要对location列进行分列,把Long,lat分列出来,但是我们这里就不做了,都是重复劳动,而且我用的pq清洗,快很多。


## 写入文件
df_parse.to_excel('贵阳市公交站点分布.xlsx', index=False)</pre> 

QGIS坐标纠偏

QGIS基础操作,我就不说了,顺便说一下QGIS对csv格式支持较好,我推荐我们导入QGIS的文件为csv格式的文件。

导入csv文件

坐标纠偏

以前说了很多,我们高德地图上的坐标是GCJ02坐标,我们需要转成WGS 1984坐标,我们在QGIS里面需要借助GeoHey插件

看一下这个坐标纠偏,区别还是很大。

总结

总的来说,我们还是推荐使用使用面向对象的方法来写代码,还有就是异常处理必不可少。我这次面对的问题是某些公交路线,高德API里面没有,这样就会异常,所以这次的异常处理不可缺少。从数据处理的角度来看,这次从速度和方便来说,pq完胜python,我推荐大家数据清洗就用pq,有些时候,我都会给出多种处理方法,pq看起来复杂,但是其实pq是最简单的,总之,我高度推荐pq进行数据清洗。还有一点,python里面的索引比较麻烦,这次我要保证和bus_stop_id和line_id,这样公交站点表和公交路线表才可以连接,其实这就是sql里面的外键连接,所以我在python数据清洗的时候,涉及到大量的索引操作,在pq里面没有这么复杂。说到这个索引,感谢我的SQL老师,当年她讲解SQL里面的索引,约束,仿佛就在昨天。高德的这个key大家可以自己去申请,这个key可能有数量的限制。我接下来会把代码上传到gitee,这个代码的管理还是很重要的,自己也学习一下代码的管理。接下来,感谢小学妹给的这个小项目,也感谢崔工对我的鼓励,其实,我最近很忙,不太想写文章的。最后,感谢认识的一个小学妹,她真的蛮优秀的,最后希望大家2021年最后这一个月万事如意,开开心心,也希望我们都有一个光明的未来。还有一个坑,我建议大家在简书上写文章,真的本地的话,图片上传有问题。

以上就是利用python爬取城市公交站点的详细内容,更多关于python爬取城市公交站点的资料请关注编程网其它相关文章!

--结束END--

本文标题: 利用python爬取城市公交站点

本文链接: https://www.lsjlt.com/news/159535.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 利用python爬取城市公交站点
    目录页面分析爬虫数据清洗Excel PQ 数据清洗python数据清洗QGIS坐标纠偏导入csv文件坐标纠偏总结利用python爬取城市公交站点 页面分析 https://guiya...
    99+
    2024-04-02
  • 怎么利用python爬取城市公交站点
    本篇内容介绍了“怎么利用python爬取城市公交站点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!页面分析https://guiyang.8...
    99+
    2023-06-22
  • Python爬虫项目--爬取链家热门城市
    本次实战是利用爬虫爬取链家的新房(声明: 内容仅用于学习交流, 请勿用作商业用途) win8, python 3.7, pycharm 1. 目标网站分析 通过分析, 找出相关url, 确定请求方式, 是否存在js加密等. 2. 新建...
    99+
    2023-01-30
    爬虫 热门 项目
  • Python怎么爬取城市租房信息
    这篇文章主要介绍了Python怎么爬取城市租房信息的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python怎么爬取城市租房信息文章都会有所收获,下面我们一起来看看吧。思路:先单线程爬虫,测试可以成功爬取之后再...
    99+
    2023-06-30
  • Python爬取城市租房信息实战分享
    目录一、单线程爬虫二、优化为多线程爬虫三、使用asyncio进一步优化四、存入Mysql数据库(一)建表(二)将数据存入数据库中 五、最终效果图 (已打码)思路:先单线程爬...
    99+
    2024-04-02
  • Python实现城市公交网络分析与可视化
    目录一、数据查看和预处理二、数据分析一、数据查看和预处理 数据获取自高德地图API,包含了天津市公交线路和站点名称及其经纬度数据。 import pandas as pd df...
    99+
    2022-11-12
    Python 城市公交网络分析 Python 城市公交分析 Python 城市公交可视化分析
  • 如何利用Python爬虫爬取网站音乐
    小编给大家分享一下如何利用Python爬虫爬取网站音乐,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体实现引入发送网络请求的第三方库import re...
    99+
    2023-06-15
  • Python怎样实现城市公交网络分析与可视化
    这期内容当中小编将会给大家带来有关Python怎样实现城市公交网络分析与可视化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、数据查看和预处理数据获取自高德地图API,包含了天津市公交线路和站点名称及其...
    99+
    2023-06-22
  • Python中怎么利用Beautifulsoup爬取网站
    这篇文章将为大家详细讲解有关Python中怎么利用Beautifulsoup爬取网站,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.开始前准备1 python3,本篇博客内容采用pytho...
    99+
    2023-06-17
  • 每日一练,Python爬取主要城市螺纹钢价格总汇
    前言可能爬取钢铁的数据,对于大家来说并不是那么重要,就当做是一个爬虫练习,提高你的爬虫技巧,哈哈,也不是没有,以后你成家立业有可能会用到的把..导入库...
    99+
    2023-06-02
  • 【Python爬虫实战】1.爬取A股上市公司年报链接并存入Excel
     1.项目分析  数据来源:巨潮资讯 项目需求:按照股票代码,公司名称,年报全称,年份,下载链接等要素写入excel表 使用语言:python 第三方库:requests, re , time等 成品展示:  2. 快速上手 废话就...
    99+
    2023-09-04
    python 爬虫 开发语言 金融 数据分析
  • 怎么用python爬取网站
    使用Python爬取网站的一般步骤如下:1. 导入所需的库,如`requests`或`urllib`用于发送HTTP请求,`beau...
    99+
    2023-08-31
    Python
  • Python爬虫示例:爬取 13 个旅游城市,看看大家放假了都爱去哪玩
    距上次假期端午结束已经47天过去了。。。依然还是没有假期,想出去好多地方玩啊。你们是不是也在期待着假期呀,不过夏天也热,下次的假期大概就是中秋国庆了,那会儿还算是比较凉爽。心血来潮,就想爬一下大家假期最爱去哪玩,作为一个专业合格的程序员,我...
    99+
    2023-06-02
  • 如何用Python爬虫爬取美剧网站
    如何用Python爬虫爬取美剧网站,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。爬虫爬取美剧网站!【前言】一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打...
    99+
    2023-06-02
  • python如何爬取华为应用市场评论
    小编给大家分享一下python如何爬取华为应用市场评论,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码分享分别爬取的一些应用信息以及应用的评论信息,数据结构如下...
    99+
    2023-06-15
  • 怎么在python中利用多线程爬取网站壁纸
    本篇文章给大家分享的是有关怎么在python中利用多线程爬取网站壁纸,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python主要用来做什么Python主要应用于:1、Web开...
    99+
    2023-06-06
  • python爬虫之利用Selenium+Requests爬取拉勾网
    目录一、前言二、分析url三、获取所有城市和页数四、生成params参数五、获取数据六、总结一、前言 利用selenium+requests访问页面爬取拉勾网招聘信息 二、分析url...
    99+
    2024-04-02
  • Python爬虫之教你利用Scrapy爬取图片
    目录Scrapy下载图片项目介绍使用Scrapy下载图片项目创建项目预览创建爬虫文件项目组件介绍Scrapy爬虫流程介绍页面结构分析最终目录树项目运行爬取结果后记Scrapy下载图片...
    99+
    2024-04-02
  • 如何使用Python爬虫爬取网站图片
    这篇文章主要介绍了如何使用Python爬虫爬取网站图片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。此次python3主要用requests,解析图片网址主要用beautif...
    99+
    2023-06-22
  • 【Python】使用Python做简易爬虫爬取B站评论
    目录 一、前言 二、分析网页 三、代码 1.头 2.获取根评论 3.获取子评论 四、总代码 五、总结 一、前言         B站评论没有查找功能,就随手写了一个爬虫爬取B站评论存储到本地txt中         首先需要安装pyth...
    99+
    2023-08-31
    python 爬虫 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作