iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python爬虫爬取属于自己的地铁线路图
  • 933
分享到

Python爬虫爬取属于自己的地铁线路图

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

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

摘要

目录一.高德地图数据爬取1.爬取思路2.python核心代码二.生成shp文件并导出图片1.文本点生成shp代码2.Arcmap设置样式前言: 网上找的地铁线路图大多数都不太清晰,而

前言:

网上找的地铁线路图大多数都不太清晰,而且有水印,对本人这种视力不好的人来说看起来是真的不方便。所以能不能制作属于自己的地铁线路图呢?好不好看无所谓,主要是高清无码,要看清楚各个站点!想了想,主要还是缺乏站点数据,有数据了图自然就有了。经过网上查询,发现高德地图上有专门的地铁线路图,但是不能导出数据或图片,只好自己想办法抓取了。下面以西安地铁线路图为例介绍方法。

一.高德地图数据爬取

1.爬取思路

首先,谷歌浏览器打开 高德地图官网 ,点击上方菜单栏 地铁 进入地铁线路网站如下,网址:Http://map.amap.com/subway/index.html

按 F12 或右击 检查 进入调试页面,点击 Network 选项。在网页上先点击 西安 ,可以发现箭头2出新增两行响应信息,鼠标左击可以发现箭头3处出现真实的请求地址等信息。

复制请求URL地址(http://map.amap.com/service/subway?_1612234237437&srhdata=6101_drw_xian.JSON),在浏览器新页面打开可以看见返回的是 json 数据,里面包含了各线路站点信息,正是我们想要的。

可以复制json数据在json在线验证网站上进行分析,以便于后续解析数据(网址:http://www.json.cn/#)。如下图所示,显示的是1号线沣河森林公园站的相关信息:中文名称、经纬度(应该是火星坐标系?)、拼音名称等。

我们通过Python爬虫爬取各线路各站点的 名称、经纬度 信息,导出到文本文件,以供后续使用。

2.python核心代码

获取网页内容:


def getHtml(url):
    user_agent = random.choice(USER_AGENTS)
    headers = {
        "Host":"map.amap.com",
        'User-Agent': user_agent
    }
    try:
        response = requests.get(url, headers=headers)
        #print(response.url)
        text = response.content
        return text
    except:
        print("爬取失败!")


解析json数据:


def parse_page(text):
    lines_list = json.loads(text).get('l')
    # 地铁线路信息表
    lineInfo_list = []
    for line in lines_list:
        #每条线的信息集合
        lineInfo = {}
        lineInfo['ln'] = line.get('ln')
        print(lineInfo['ln'])

        #线路站点列表
        station_list = []
        st_list = line.get('st')
        for st in st_list:
            station_dict = {}
            station_dict['name'] = st.get('n')
            coord = st.get('sl')
            station_dict['lat'] = coord.split(',')[0]
            station_dict['lon'] = coord.split(',')[-1]
            print("站名称:", station_dict['name'])
            print("经度:", station_dict['lat'])
            print("纬度:", station_dict['lon'])
            station_list.append(station_dict)
            #pass
        print('-----------------------------------')
        lineInfo['st'] = station_list
        lineInfo['kn'] = line.get('kn')
        lineInfo['ls'] = line.get('ls')
        lineInfo['cl'] = line.get('cl')
        lineInfo_list.append(lineInfo)
    #返回各线路信息列表
    return lineInfo_list


保存站点数据(站名称、经纬度):


def save_file(filename, lineInfo):
    #print("开始写入文件......")
    with open(filename, 'a', encoding='utf-8') as f:
        for st in lineInfo['st']:
            f.write(st['name'] + "  " + st['lat'] + "  " + st['lon'] + "\n")
    #print("写入文件完成!")


爬取完成后,生成的数据如下:

二.生成shp文件并导出图片

主要思路:调用Arcpy函数生成shp文件-——>点转线——>设置符号样式——>导出图片。

1.文本点生成shp代码


def create_shp(text,dirpath):
    point_shpname = text.split('.')[0] + "_point.shp"
    line_shpname = text.split('.')[0] + "_line.shp"
    f = open(text, 'r')
    lines = f.readlines()
    spatRef = arcpy.SpatialReference(4326)
    createFC = arcpy.CreateFeatureclass_management(dirpath, point_shpname, "POINT", "", "", "",spatRef)
    arcpy.AddField_management(createFC, "name", "TEXT")
    arcpy.AddField_management(createFC, "lat", "DOUBLE")
    arcpy.AddField_management(createFC, "lon", "DOUBLE")
    cur = arcpy.InsertCursor(createFC)

    for line in lines:
        info = line.strip().split("  ")
        row = cur.newRow()
        name = info[0]
        point = arcpy.Point()
        point.X = float(info[1])
        point.Y = float(info[2])
        pointGeometry = arcpy.PointGeometry(point)
        row.shape = pointGeometry
        row.name = name
        row.lon = point.X
        row.lat = point.Y
        cur.insertRow(row)

    #站点生成线
    arcpy.PointsToLine_management(point_shpname, line_shpname)

2.Arcmap设置样式

将生成的点shp与线shp矢量文件加载到arcmap当中设置样式与符号大小,然后导出地图为图片。记得导出地图时图片分辨率选择为300dpi。

最终,如下图所示属于自己的地铁线路图就制作完成了。图片估计上传到微信上就不是原图了,又会变模糊,但是实际看起来还是比较清楚的。

到此这篇关于python爬虫爬取属于自己的地铁线路图的文章就介绍到这了,更多相关Python爬取地铁线路图内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python爬虫爬取属于自己的地铁线路图

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

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

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

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

下载Word文档
猜你喜欢
  • Python爬虫爬取属于自己的地铁线路图
    目录一.高德地图数据爬取1.爬取思路2.python核心代码二.生成shp文件并导出图片1.文本点生成shp代码2.Arcmap设置样式前言: 网上找的地铁线路图大多数都不太清晰,而...
    99+
    2024-04-02
  • python爬虫爬取股票的k线图
    目录前言数据来源分析数据抓取总结前言 之前已经讲述了一些关于;python;获取基金的一些信息,最近又有了一些新发现,和大家分享一下,这个是非常重要的内容,非常重要的内容。这个数据也...
    99+
    2024-04-02
  • Python爬虫入门教程——爬取自己的博
    互联网时代里,网络爬虫是一种高效地信息采集利器,可以快速准确地获取网上的各种数据资源。本文使用Python库requests、Beautiful Soup爬取CSDN博客的相关信息,利用txt文件转存。 基础知识: 网络爬虫是一种高效地信...
    99+
    2023-01-30
    自己的 爬虫 入门教程
  • Python爬虫 自动爬取图片并保存
    一、准备工作   用python来实现对图片网站的爬取并保存,以情绪图片为例,搜索可得到下图所示 f12打开源码 在此处可以看到这次我们要爬取的图片的基本信息是在img - scr中 二、代码实现 这次的爬取主要用了如下的第三方库...
    99+
    2023-10-09
    爬虫 python 数据挖掘
  • java多线程爬虫爬取百度图片的方法
    小编给大家分享一下java多线程爬虫爬取百度图片的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Java的特点有哪些Java的特点有哪些1.Java语言作为静...
    99+
    2023-06-14
  • PHP爬虫读取IP,选个适合自己的方法
    在网络爬虫的开发过程中,获取IP地址是一个常见需求。PHP作为一种流行的编程语言,有多种方法可以实现爬虫读取IP的功能。本文将对比评测几种常用的PHP爬虫读取IP的方法,帮助读者选择适合自己需求的方法。 1.使用cURL库获取IP cURL...
    99+
    2023-10-07
    获取 三方
  • 通过python爬虫mechanize库爬取本机ip地址的方法
    目录需求分析实现分析实际使用完整代码演示需求分析 最近,各平台更新的ip属地功能非常火爆,因此呢,也出现了许多新的网络用语,比如说“xx加几分”,&ldquo...
    99+
    2024-04-02
  • 如何理解Python网络爬虫和web的系统学习路线图
    如何理解Python网络爬虫和web的系统学习路线图,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。随着Python的不断崛起,TIOBE预计它最终将获得第一名。TIOBE在...
    99+
    2023-06-02
  • Python爬虫实现自动化爬取b站实时弹幕的方法
    这篇文章主要介绍了Python爬虫实现自动化爬取b站实时弹幕的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Python主要用来做什么Python主要应用于:1、Web开...
    99+
    2023-06-14
  • Python绘制北上广深的地铁路线动态图
    目录坐标点的采集坐标系的转换地理可视化其他效果展示上海-变色广州-卫星图深圳-个性化配色小结今天教大家用python制作北上广深——地铁线路动态图,这可能是全网最全最详细的教程了。 ...
    99+
    2024-04-02
  • Python爬虫中自动爬取某车之家各车销售数据的示例分析
    这篇文章主要介绍Python爬虫中自动爬取某车之家各车销售数据的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、目标网页分析目标网站是某车之家关于品牌汽车车型的口碑模块相关数据,比如我们演示的案例奥迪Q5L...
    99+
    2023-06-15
  • 怎么用Python 绘制北上广深的地铁路线动态图
    今天就跟大家聊聊有关怎么用Python 绘制北上广深的地铁路线动态图,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。今天教大家用python制作北上广深——地铁线路动态图。坐...
    99+
    2023-06-22
  • 【Python合集系列】爬虫有什么用,网友纷纷给出自己的答案,王老师,我..我想学那个..爬虫。可以嘛?“(代码免费分享)
    导语 Hello,大家好呀!我是木木子吖~ 一个集美貌幽默风趣善良可爱并努力码代码的程序媛一枚。 听说关注我的人会一夜暴富发大财哦~ (哇哇哇 这真的爱😍😍)  生活中总有些东西值得爬一爬 爬虫可以从网站...
    99+
    2023-09-18
    python 爬虫 爬虫合集实战
  • python网络爬虫之模拟登录 自动获取cookie值 验证码识别的具体实现
    目录1、爬取网页分析2、验证码识别3、cookie自动获取4、程序源代码chaojiying.pysign in.py1、爬取网页分析 爬取的目标网址为:https://www.gu...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作