最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲爬取屬于自己的地鐵線路圖

 更新時間:2022年01月25日 09:55:55   作者:編程簡單學  
這篇文章主要介紹了Python爬蟲爬取屬于自己的地鐵線路圖,下面文章主要事根據自己需要對地鐵路線進行爬取的實現過程,需要的小伙伴可以參考一下,希望對你有所幫助

前言:

網上找的地鐵線路圖大多數都不太清晰,而且有水印,對本人這種視力不好的人來說看起來是真的不方便。所以能不能制作屬于自己的地鐵線路圖呢?好不好看無所謂,主要是高清無碼,要看清楚各個站點!想了想,主要還是缺乏站點數據,有數據了圖自然就有了。經過網上查詢,發(fā)現高德地圖上有專門的地鐵線路圖,但是不能導出數據或圖片,只好自己想辦法抓取了。下面以西安地鐵線路圖為例介紹方法。

一.高德地圖數據爬取

1.爬取思路

首先,谷歌瀏覽器打開 高德地圖官網 ,點擊上方菜單欄 地鐵 進入地鐵線路網站如下,網址:http://map.amap.com/subway/index.html。

按 F12 或右擊 檢查 進入調試頁面,點擊 Network 選項。在網頁上先點擊 西安 ,可以發(fā)現箭頭2出新增兩行響應信息,鼠標左擊可以發(fā)現箭頭3處出現真實的請求地址等信息。

復制請求URL地址(http://map.amap.com/service/subway?_1612234237437&srhdata=6101_drw_xian.json),在瀏覽器新頁面打開可以看見返回的是 json 數據,里面包含了各線路站點信息,正是我們想要的。

可以復制json數據在json在線驗證網站上進行分析,以便于后續(xù)解析數據(網址:http://www.json.cn/#)。如下圖所示,顯示的是1號線灃河森林公園站的相關信息:中文名稱、經緯度(應該是火星坐標系?)、拼音名稱等。

我們通過python爬蟲爬取各線路各站點的 名稱、經緯度 信息,導出到文本文件,以供后續(xù)使用。

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爬取地鐵線路圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

双牌县| 彭阳县| 剑川县| 义乌市| 临武县| 十堰市| 连州市| 区。| 丹寨县| 水城县| 乡城县| 西林县| 左贡县| 淅川县| 瑞金市| 宽甸| 屏边| 潜江市| 陵水| 和政县| 微博| 丽江市| 洪泽县| 聂拉木县| 洛阳市| 会宁县| 堆龙德庆县| 山东| 昌乐县| 金川县| 万荣县| 安吉县| 景洪市| 吉木萨尔县| 肥东县| 岳阳市| 普宁市| 留坝县| 姚安县| 凤山县| 四会市|