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