17 lines
822 B
Python
17 lines
822 B
Python
import json
|
|
from pathlib import Path
|
|
from bs4 import BeautifulSoup
|
|
|
|
def extract(markup):
|
|
soup=BeautifulSoup(markup,'html.parser')
|
|
records=[]
|
|
def field_data(field):
|
|
return {'pointer':field['data-field'],'label':field.get('data-label',''),'state':field['data-value-state'],'type':field.get('data-value-type','string'),'text':field.get_text()}
|
|
for record in soup.select('.record[data-record-id]'):
|
|
records.append({'id':record['data-record-id'],'fields':[field_data(f) for f in record.select('.field[data-field]:not([data-role])')],
|
|
'roles':{f['data-role']:field_data(f) for f in record.select('.field[data-role]')}})
|
|
return records
|
|
|
|
def save(records,path):
|
|
Path(path).write_text(''.join(json.dumps(r,ensure_ascii=False)+'\n' for r in records),encoding='utf-8')
|