这是一个有趣的,请参阅下面的脚本,它会下载所有原始数据。我已按要求提取了关键数据,但您可能想自己查看原始数据,因为那里有很多。
需要注意的是,我能找到的唯一“PGA_CM/S^2”数据是每条记录的“开始”页面上的粗体值。
import requests
import pandas as pd
url = 'https://esm-db.eu/esm_next_ws/jsonrpc'
payload = '{"jsonrpc":"2.0","method":"armonia","id":"8","params":{"map":{"_page":"DYNA_X_event_waveform_band_instrument_D","_state":"find","_action_json_rpc_list":"1","_rows_per_page":"10000","internal_event_id":"IT-2012-0008","_operator_internal_event_id":"=","_order_field_0":"epi_dist","_order_direction_0":"asc","_token":"NULLNULLNULLNULL"}}}'
con_len = len(payload)
headers= {
'Accept':'application/json, text/plain, */*',
'Accept-Encoding':'gzip, deflate, br',
'Content-Length':str(con_len),
'Content-Type':'application/x-www-form-urlencoded',
'Host':'esm-db.eu',
'Origin':'https://esm-db.eu',
'Referer':'https://esm-db.eu/',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'
}
print('Fetching data...')
data = requests.post(url,headers=headers,data=payload).json()
final = []
for row in data['result']['rows']:
#loads of data, might be worth downloading json (data variable) and seeing what else you want
item = {
'Network':row[39],
'Station_Code':row[22],
'Station_Name':row[46][10],
'Station_Latitude_Degree':row[46][12],
'Station_Longitude_Degree':row[46][3],
'PGA_CM/S^2':row[18], #can only find the value in bold on the "Go" page
'Date':row[24].replace('T',' '),
}
final.append(item)
df = pd.DataFrame(final)
df.to_csv('earthquakedata.csv',index=False)
print('Saved to earthquake.csv')
如果您想要整个数据负载(在 csv 中几乎无法管理),那么您可以通过将最后几行更改为以下内容将其全部转储到 csv:
print('Fetching data...')
data = requests.post(url,headers=headers,data=payload).json()
df = pd.DataFrame(data['result']['rows'])
df.to_csv('earthquakedata_ugly.csv',index=False)
print('Saved to earthquake_ugly.csv')