繁体   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