Files
Web-Parser-Constructor/examples/parsers/common.py
T
2026-10-01 00:28:16 +10:00

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')