Šiame pavyzdyje nuskaitysime butų informaciją iš projekto K125. Butų informaciją (kaina, plotas ir pan.) galime rasti užėję ant tooltipų aukšto planuose:

Išsaugotą puslapio kopiją rasite čia. Patalpų aprašymo HTML kodo struktūra atrodo šitaip:
<area
shape="poly"
coords="1688,0,1779,1,1779,204,1689,204"
href="#"
alt="Patalpa 8"
data-num="9"
data-flat-id="8"
data-flat-status="Parduotas"
data-flat-area="28,39"
ata-flat-orientation="north"
data-flat-price="59000"
data-maphilight='{"fillColor":"e13b18"}'>
Standartiškai pradedame nuo reguliariaus reiškinio, aprašančio mums reikalinga struktūrą:
r = re.compile('<area shape="poly" coords=".*?" href=".*?" alt=".*?" data-num=".*?" data-flat-id="(.*?)" data-flat-status="(.*?)" data-flat-area="(.*?)" data-flat-orientation="(.*?)" data-flat-price="(.*?)" data-maphilight=".*?">')
results = r.findall(req.content.decode('utf-8'))
for r in results:
print(r)
Šis reiškinys grąžintų rezultatus šiuo formatu:
('23', 'Laisvas', '70,50', 'north', '145000')
('24', 'Laisvas', '53,40', 'north', '110000')
('25', 'Parduotas', '24,75', 'north', '56000')
('26', 'Parduotas', '24,75', 'north', '56000')
('1', 'Laisvas', '54,19', 'north', '110000')
...
Tai atspindi tokią eilutės struktūrą:
[id, status, area, orientation, price]
Panaudokime transform API pakeisti paieškos rezultatus į rekiamą struktūrą:
# ('10', 'Laisvas', '59,97', 'south', '149900')
transform_data = {
'email': 'tavo@email.com',
'data': json.dumps(results),
'schema': json.dumps(['id', 'status', 'area', 'orientation', 'price']),
}
tranform_response = requests.post('http://www.citynow.org/api/transform', data=transform_data).json()
apartments = tranform_response.get('results')
Transformuoti rezultatai yra reikalingu formatu:
[{
'status': 0,
'price': 145000,
'orientation': ['E', 'N'],
'id': '23',
'area': 70.5,
},
..
]
Pastebime keletą dalykų: struktūrizuoje vis dar trūksta dviejų privalomų laukelių: kambarių skaičiaus (loftu projekte visada bus reikšmė 1), bei aukštų skaičiaus. Pastarąjį galime apskaičiuoti nuskaitydami aukšto reikšmę iš lentelės antraštės, kurios struktūra atrodo taip:
<h3 class="heading">7 aukštas</h3>
Galutinė programa atrodys taip:





