簡體   English   中英

如何從 java 腳本中刮取經緯度

[英]How to scrape latitude longitude from java script

我對 BeautifulSoup4 相當陌生,並且無法從 javascript 中提取緯度和經度值。 該文件很長,我必須准備來自所有緯度經度的數據框

Java 腳本文件將包含如下字符串:

var marker_9795626cfd584471ab4406d756a00baf = L.marker([19.041691972000024, 72.85052482000003],{}).addTo(feature_group_ad623471194f451d9f1cf7fc718747c5);

此處的標記 ID 為 - 9795626cfd584471ab4406d756a00baf 緯度為 - 19.041691972000024 經度為 - 72.85052482000003

如何使用 BeautifulSoup 從字符串中提取標記 ID、緯度和經度。

如果您只需要從該字符串中隔離這兩個數字,請嘗試以下操作:

def parse(text):
   return [float(i) for i in text.split('[', 1)[1].split(']', 1)[0].split(', ')]

long_lat = parse(your_string_var)

編輯:哦,要獲得這樣的 id 應該這樣做:

def parse2(text):
   return text.split('_', 1)[1].split(' ', 1)[0]

id = parse2(your_string_var)

這是 JavaScript 腳本,所以 BeautifulSoup 不會執行/解析它。 您可以使用re模塊來獲取信息。

例如:

進口再

txt = '''var marker_9795626cfd584471ab4406d756a00baf = L.marker([19.041691972000024, 72.85052482000003],{}).addTo(feature_group_ad623471194f451d9f1cf7fc718747c5);'''

marker_id, lat, lon = re.search(r'marker_([a-f\d]+).*?\[(.*?), (.*?)\]', txt).groups()

print(marker_id)
print(lat)
print(lon)

印刷:

9795626cfd584471ab4406d756a00baf
19.041691972000024
72.85052482000003

編輯:要解析文件中的變量,您可以使用此腳本:

import re

with open('<YOUR FILE>', 'r') as f_in:
    for line in f_in:
        m = re.search(r'marker_([a-f\d]+).*?\[(.*?), (.*?)\]', line)
        if m:
            marker_id, lat, lon = m.groups()
            print(marker_id, lat, lon)

EDIT2:新版本:

import re

with open('<YOUR FILE>', 'r') as f_in:
    data = f_in.read()

for marker_id, lat, lon in re.findall(r'marker_([a-fA-F\d]+).*?\[(.*?),\s*(.*?)\]', data):
    print(marker_id, lat, lon)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM