Fixes parsing of bad-designed XML part of the code from Catastro (sometimes returns a list, sometimes only 1 entry but not within a list)
This commit is contained in:
parent
06bb139e63
commit
0478146b27
|
@ -1,3 +1,4 @@
|
|||
import json
|
||||
from datetime import datetime
|
||||
|
||||
from src.librecatastro.domain.address import Address
|
||||
|
@ -32,6 +33,12 @@ class CadasterEntryXML(CadasterEntry):
|
|||
self.gsurface = config['not_available_via_XML']
|
||||
self.constructions = []
|
||||
constructions = xml['consulta_dnp']['bico']['lcons']['cons']
|
||||
|
||||
''' Bad XML design, instead of returning a list with 1 element, it returns
|
||||
the element'''
|
||||
if not isinstance(constructions, list):
|
||||
constructions = [constructions]
|
||||
|
||||
for construction in constructions:
|
||||
use = construction['lcd']
|
||||
doorway = construction['dt']['lourb']['loint']['es']
|
||||
|
|
|
@ -60,7 +60,7 @@ class ScrapperXML:
|
|||
''' Adding to tracking file'''
|
||||
logger.info('{},{}'.format(lon, lat))
|
||||
|
||||
num_scrapping_fails = 5
|
||||
num_scrapping_fails = 10
|
||||
|
||||
entry = ScrapperXML.get_cadaster_entries_by_address(prov_name, city_name, tv, nv, num)
|
||||
cadaster_entry = CadasterEntryXML(entry, lon, lat)
|
||||
|
@ -167,6 +167,8 @@ class ScrapperXML:
|
|||
params['Puerta'] = ''
|
||||
|
||||
url = cls.URL_LOCATIONS_BASE.format("/OVCCallejero.asmx/Consulta_DNPLOC")
|
||||
logger.debug("[|||||||||| ] URL for entry: {} Params: {}".format(url, params))
|
||||
|
||||
response = requests.get(url, params=params)
|
||||
xml = response.content
|
||||
return xmltodict.parse(xml, process_namespaces=False, xml_attribs=False)
|
||||
|
|
|
@ -53,7 +53,7 @@ class ScrapperXMLTests(unittest.TestCase):
|
|||
cadaster['consulta_numerero']['lerr']['err']['cod'] == '43':
|
||||
num_scrapping_fails -= 1
|
||||
else:
|
||||
num_scrapping_fails = 5
|
||||
num_scrapping_fails = 10
|
||||
matches += 1
|
||||
|
||||
counter += 1
|
||||
|
@ -94,7 +94,7 @@ class ScrapperXMLTests(unittest.TestCase):
|
|||
coords = ScrapperXML.get_coords_from_cadaster(prov_name, city_name, cadaster_num)
|
||||
lon = coords['consulta_coordenadas']['coordenadas']['coord']['geo']['xcen']
|
||||
lat = coords['consulta_coordenadas']['coordenadas']['coord']['geo']['ycen']
|
||||
num_scrapping_fails = 5
|
||||
num_scrapping_fails = 10
|
||||
|
||||
entry = ScrapperXML.get_cadaster_entries_by_address(prov_name, city_name, tv, nv, num)
|
||||
cadaster_entry = CadasterEntryXML(entry, lon, lat)
|
||||
|
|
Loading…
Reference in New Issue