[英]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.