0

I'm making a program to scrape some websites, and I'm finding a problem when scraping one of them. On the others I've found my way using Selenium + BS4 to get the information I need and navigating the pages.

The page is this one: https://www.borm.es/#/home/sumario/21-11-2020

Now, the objective is to get all the paragraphs from the class: ng-binding, and the links of each "VER ANUNCIO" that each one has below them.

Usually I would use soup.find_all() to get all of them and navigate the tree or use Selenium to get all the elements using XPATH/CSS SELECTOR.

The problem I'm facing is that find_all(), or find() is returning nothing, (empty list or None), and Selenium returns None too.

I've tried checking if the elements are inside a frame, which I think they're not. I've tried WebDriver wait to see if the page should stop to load before doing something. Different classes/tags give same result.

Now, when I print the BeautifulSoup object, it returns this instead of the HTML code I see inspecting the page:

<!DOCTYPE html>

<html data-ng-app="BormApp" lang="es">
<head>
<title>Sede Electrónica del Boletín Oficial de la Región de Murcia</title>
<meta content="zjUBcjStVhysvi2ANOAn6-FG7aKKif43J62Ifad9JjA" name="google-site-verification"/>
<!-- META ROBOTS -->
<meta content="index,follow,all" name="robots"/>
<!-- METAS GENÉRICAS -->
<meta charset="utf-8"/>
<base href="/"/>
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta content="Sede Electrónica del Boletín Oficial de la Región de Murcia" name="title"/>
<meta content="Sede Electrónica del Boletín Oficial de la Región de Murcia" name="description"/>
<meta content="borm" name="author"/>
<!-- CARGA DE FUENTES -->
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,700" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css?family=Coiny" rel="stylesheet"/>
<!-- CSS -->
<link href="resources/css/main.css" media="screen" rel="stylesheet"/>
<link href="resources/css/bootstrap.min.css" media="screen" rel="stylesheet"/>
<link href="resources/css/estilos.css" media="screen" rel="stylesheet"/>
<link href="resources/css/imprimir.css" media="print" rel="stylesheet"/>
<link crossorigin="anonymous" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" rel="stylesheet"/>
<link href="resources/css/bootstrap-datetimepicker.css" rel="stylesheet"> <!-- datepiker -->
<link href="resources/css/bootstrap-select.min.css" rel="stylesheet"/> <!-- select -->
<!-- Propio -->
<link href="resources/css/site.css" rel="stylesheet"/>
<link href="resources/css/jquery-ui.css" rel="stylesheet"/>
<!-- Estilos  -->
<link href="bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet"/>
<link href="bower_components/angular-loading-bar/build/loading-bar.min.css" rel="stylesheet"/>
<link href="resources/css/bootstrap-year-calendar.min.css" rel="stylesheet"/>
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"/>
<!-- FAVICON -->
<link href="resources/images/favicon.png" rel="icon" type="image/png">
<!--[if IE]><link rel="shortcut icon" type="image/x-icon" href="resources/images/favicon.png" /><![endif]-->
<link href="./favicon.ico" rel="shortcut icon" type="image/x-icon">
<link href="resources/images/favicon.png" rel="apple-touch-icon">
<!-- PLUGINS GENERALES -->
<script src="resources/js/jquery.js"></script>
<script src="resources/js/jquery-ui.js"></script>
<script src="resources/js/moment.min.js"></script> <!-- datepiker -->
<script src="resources/js/es.js"></script> <!-- datepiker -->
<script src="resources/js/bootstrap.min.js"></script>
<script src="resources/js/bootstrap-hover-dropdown.min.js"></script>
<script src="resources/js/bootstrap-datetimepicker.min.js"></script> <!-- datepiker -->
<script src="resources/js/bootstrap-select.min.js"></script> <!-- select -->
<script src="resources/js/defaults-es_ES.js"></script>
<!-- Javascript -->
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-ui-router/release/angular-ui-router.min.js"></script>
<script src="bower_components/json3/lib/json3.min.js"></script>
<script src="bower_components/oclazyload/dist/ocLazyLoad.min.js"></script>
<script src="bower_components/angular-loading-bar/build/loading-bar.min.js"></script>
<script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"></script>
<script src="bower_components/metisMenu/dist/metisMenu.min.js"></script>
<script src="bower_components/moment/min/moment-with-locales.min.js"></script>
<script src="bower_components/angular-sanitize/angular-sanitize.min.js"></script>
<script src="bower_components/angular-translate/angular-translate.min.js"></script>
<script src="bower_components/angular-dynamic-locale/dist/tmhDynamicLocale.js"></script>
<script src="https://code.angularjs.org/1.6.6/i18n/angular-locale_es-es.js"></script>
<script src="resources/js/bootstrap-year-calendar.min.js"></script>
<script src="scripts/i18n/messages_es.js"></script>
<script src="scripts/i18n/messages_en.js"></script>
<!-- Application Modules -->
<script src="scripts/app.js"></script>
<script src="scripts/boletines/controllers/boletinController.js"></script>
<script src="scripts/suplementos/controllers/suplementoController.js"></script>
<script src="scripts/buzonSugerencias/controllers/sugerenciaController.js"></script>
<script src="scripts/homeBorm/controllers/homeController.js"></script>
<script src="scripts/sumario/controllers/sumarioController.js"></script>
<script src="scripts/anunciantes/controllers/anunciantesController.js"></script>
<script src="scripts/anunciante/controllers/anuncianteController.js"></script>
<script src="scripts/anuncio/controllers/anuncioController.js"></script>
<script src="scripts/calendario/controllers/calendarioController.js"></script>
<script src="scripts/sumarioSuplementos/controllers/sumarioSuplementoController.js"></script>
<script src="scripts/ayuntamientos/controllers/ayuntamientosController.js"></script>
<script src="scripts/ayuntamiento/controllers/ayuntamientoController.js"></script>
<script src="scripts/noticias/controllers/noticiasController.js"></script>
<script src="scripts/masVisitado/controllers/masVisitadoController.js"></script>
<script src="scripts/normativaGeneral/controllers/normativaGeneralController.js"></script>
<script src="scripts/plantillasEncuestas/controllers/plantillasEncuestasController.js"></script>
<script src="scripts/preguntasFrecuentes/controllers/preguntasFrecuentesController.js"></script>
<script src="scripts/calendarioSede/controllers/calendarioSedeController.js"></script>
<script src="scripts/directorio/controllers/directorioController.js"></script>
<script src="scripts/datosAbiertos/controllers/datosAbiertosController.js"></script>
<script src="scripts/suscripcion/controllers/suscripcionController.js"></script>
<script src="scripts/normativa/controllers/normativaController.js"></script>
<script src="scripts/enlaces/controllers/enlacesController.js"></script>
<script src="scripts/buscador/controllers/buscadorController.js"></script>
<script src="scripts/rss/controllers/rssController.js"></script>
<script src="scripts/suscripcion/controllers/loginController.js"></script>
<script src="scripts/eli/controllers/jurisdictionController.js"></script>
<script src="scripts/eli/controllers/typeController.js"></script>
<script src="scripts/eli/controllers/yearController.js"></script>
<script src="scripts/eli/controllers/monthController.js"></script>
<script src="scripts/eli/controllers/dayController.js"></script>
<script src="scripts/eli/controllers/numberController.js"></script>
<script src="scripts/eli/controllers/languageController.js"></script>
<script src="scripts/eli/controllers/normativaEliController.js"></script>
<script src="scripts/eli/controllers/corrigendumController.js"></script>
<script src="scripts/eli/controllers/normativaCorrigendumController.js"></script>
<!-- Application Services -->
<script src="scripts/buzonSugerencias/services/sugerenciaService.js"></script>
<script src="scripts/suscripcion/services/suscripcionService.js"></script>
<!-- Application Factories -->
<script src="scripts/suplementos/factories/suplementoFactory.js"></script>
<script src="scripts/boletines/factories/boletinFactory.js"></script>
<script src="scripts/buzonSugerencias/factories/sugerenciaFactory.js"></script>
<script src="scripts/sumario/factories/sumarioFactory.js"></script>
<script src="scripts/anuncio/factories/anuncioFactory.js"></script>
<script src="scripts/calendario/factories/calendarioFactory.js"></script>
<script src="scripts/sumarioSuplementos/factories/sumarioSuplementoFactory.js"></script>
<script src="scripts/ayuntamientos/factories/ayuntamientosFactory.js"></script>
<script src="scripts/noticias/factories/noticiasFactory.js"></script>
<script src="scripts/normativaGeneral/factories/normativaGeneralFactory.js"></script>
<script src="scripts/noticias/factories/noticiasFactory.js"></script>
<script src="scripts/plantillasEncuestas/factories/plantillasEncuestasFactory.js"></script>
<script src="scripts/preguntasFrecuentes/factories/preguntasFrecuentesFactory.js"></script>
<script src="scripts/calendarioSede/factories/calendarioSedeFactory.js"></script>
<script src="scripts/normativa/factories/normativaFactory.js"></script>
<script src="scripts/enlaces/factories/enlacesFactory.js"></script>
<script src="scripts/suscripcion/factories/suscripcionFactory.js"></script>
<script src="scripts/buscador/factories/buscadorFactory.js"></script>
<script src="scripts/rss/factories/rssFactory.js"></script>
<script src="scripts/eli/factories/eliFactory.js"></script>
<!-- Commons Services -->
<script src="scripts/commons/services/alertsService.js"></script>
<script src="scripts/commons/services/deviceService.js"></script>
<script src="scripts/commons/services/breadCrumbService.js"></script>
<!-- Interceptors -->
<script src="scripts/commons/factories/httpResponseErrorHandlerFactory.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=UA-23666061-1"></script>
<script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
    
      gtag('config', 'UA-23666061-1');
    </script>
<script>
        /**
        * Función que realiza un seguimiento de un clic en un enlace saliente en Analytics.
        * Esta función toma una cadena de URL válida como argumento y la utiliza
        * como la etiqueta del evento. Configurar el método de transporte como "beacon" permite que el hit se envíe
        * con "navigator.sendBeacon" en el navegador que lo admita.
        */
        var trackOutboundLink = function(url) {
          gtag('event', 'clic', {
            'event_category': 'saliente',
            'event_label': url,
            'transport_type': 'beacon',
            'event_callback': ''
          });
        }
    </script>
<!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
      <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
</link></link></link></link></head>
<body>
<h1 class="hidden">UNO</h1>
<a class="hidden" href="https://www.borm.es/#/home/mapaWeb" title="map">Mapa web</a>
<a class="hidden" href="https://www.borm.es/accesibilidad.html" title="Accessibility">Accesibilidad</a>
<div>
<div data-ui-view=""></div>
</div>
</body>
</html>

While searching I've found this: Web-scraping JavaScript page with Python

But I'm too new to this and I just don't understand how to use this for my purposes, but I think it's pointing in the right direction.

So my questions are, what is going on in this webpage, and could you point me on the right direction? Maybe on what's the term that I'm looking for, or how can I use Selenium or BS4 to get what I'm looking for.

Thanks in advance and have a nice weekend!

EDIT: I case somebody need this, this are several pieces of the code I'm running which return empty lists or None when locating elements of the webpage.


soup = BeautifulSoup(requests.get(browser.current_url).content, 'html.parser')


# finds all the disposiciones
lista_disposiciones = soup.find_all("div", {"class": "ng-binding"})
lista_disposiciones = soup.find_all("div", {"class": "ANYTHING THAT GOES HERE RETURNS NOTHING"})
lista_disposiciones = webdriver.find_elements(WHATEVER I USE TO LOCATE ELEMENTS RETURN NOTHING)

barny
  • 5,280
  • 4
  • 16
  • 21
Alberefe
  • 27
  • 4
  • Can you show what you have tried? – Abhishek Rai Nov 21 '20 at 11:21
  • "sually I would use soup.find_all() to get all of them and navigate the tree or use Selenium to get all the elements using XPATH/CSS SELECTOR." ""The problem I'm facing is that find_all(), or find() is returning nothing, (empty list or None), and Selenium returns None too." "I've tried WebDriver wait to see if the page should stop to load before doing something. Different classes/tags give same result." From the question. It felt redundant after explaining it with plain language. Tell me if the code would help and will paste the different approaches. – Alberefe Nov 21 '20 at 11:41
  • I'm pasting the code in the question, but if you read it, you'll see there's no error. Just that it returns nothing. – Alberefe Nov 21 '20 at 11:53

1 Answers1

1

What is going on is that the page content that you are viewing is actually being loaded by JavaScript code that is being executed after the initial page content (which you have printed out and are searching) has loaded and that is why you are not finding the elements you are expecting. There are two ways of dealing with this:

  1. Use Selenium to drive a web browser such as Chrome to load the page and wait for an element that you are looking for to be loaded using a Selenium call. Then you can get from Selenium the current page source and initialize BeautifulSoup with that and proceed as usual. This is the "standard" approach.
  2. Using a browser inspector you can look at the network XHR requests that are being made after the page has loaded. One or more of these will be the cause of fetching additional data for updating the DOM. You can then note what the GET or POST request(s) was, make the request yourself and process the data directly.

For example:

from selenium import webdriver
from bs4 import BeautifulSoup

options = webdriver.ChromeOptions()
options.add_argument("headless")
options.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(options=options)

try:
    driver.implicitly_wait(3) # wait up to 3 seconds before calls to find elements time out
    driver.get('https://www.borm.es/#/home/sumario/21-11-2020')
    elem = driver.find_element_by_class_name('ng-binding')
    soup = BeautifulSoup(driver.page_source, 'html.parser')
    lista_disposiciones = soup.find_all("h1", {"class": "ng-binding"})
    print(len(lista_disposiciones))
    print(lista_disposiciones)
finally:
    driver.quit()

Prints:

1
[<h1 class="ng-binding">Boletín Oficial de la Región de Murcia  Nº , 
                <a data-ng-href="/services/boletin/ano//numero//pdf" href="/services/boletin/ano//numero//pdf" target="_blank">
<img alt="Imagen de icono en PDF" src="resources/images/ico-pdf-01.png" title="Aquí puede descargar el boletín en PDF"/>
</a>
</h1>]

The only element with class ng-binding I found was on an <h1> tag.

Or possibly make the following GET request (determined by analyzing the XHR requests being made during the loading of the page using Chromes inspector -- see image below):

https://www.borm.es/services/boletin/fecha/21-11-2020/sumario

And what comes back is the following JSON string:

{"id":98838,"numero":271,"ano":2020,"fechaPublicacion":"21-11-2020","fechaPublicacionLarga":"sábado 21 de noviembre de 2020","boletinAnterior":98837,"fechaAnterior":"20-11-2020","boletinSiguiente":null,"fechaSiguiente":null,"extraordinario":false,"anunciosBoletin":[{"id":789282,"historico":false,"sumario":"Orden de 12 de noviembre de 2020, de la Consejería de Presidencia y Hacienda, por la que se aprueba el programa de materias y los ejercicios de las pruebas selectivas para ingreso en la Administración Pública Regional en el Cuerpo de Interventores y Auditores de la Región de Murcia, para el turno de acceso libre.","numero":6615,"ano":2020,"anunciante":"Consejería de Presidencia y Hacienda ","subAnunciante":"","apartado":"I. Comunidad Autónoma","subApartado":"2. Autoridades y Personal","categoriaCompleta":"Oposiciones - Temarios","fechaPublicacion":"21-11-2020","numeroBoletin":271,"paginas":15,"tamano":374.53,"numAccesos":63},{"id":789283,"historico":false,"sumario":"Convenio de colaboración a suscribir entre la Comunidad Autónoma de la Región de Murcia, a través del Instituto Murciano de Acción Social y el Ayuntamiento de Totana, para la prestación, dentro de su ámbito territorial, del servicio de ayuda a domicilio para personas dependientes.","numero":6616,"ano":2020,"anunciante":"Consejería de Mujer, Igualdad, LGTBI, Familias y Política Social","subAnunciante":"","apartado":"I. Comunidad Autónoma","subApartado":"3. Otras Disposiciones","categoriaCompleta":"Convenios","fechaPublicacion":"21-11-2020","numeroBoletin":271,"paginas":11,"tamano":358.49,"numAccesos":25},{"id":789284,"historico":false,"sumario":"Convenio de colaboración a suscribir entre la Comunidad Autónoma de la Región de Murcia, a través de la Consejería de Mujer, Igualdad, LGTBI, Familias Y Política Social, y la Asociación para la Mediación de la Región de Murcia, para la derivación y coordinación de casos del servicio de punto de encuentro familiar de violencia de género.","numero":6617,"ano":2020,"anunciante":"Consejería de Mujer, Igualdad, LGTBI, Familias y Política Social","subAnunciante":"","apartado":"I. Comunidad Autónoma","subApartado":"3. Otras Disposiciones","categoriaCompleta":"Convenios","fechaPublicacion":"21-11-2020","numeroBoletin":271,"paginas":7,"tamano":341.7,"numAccesos":25},{"id":789285,"historico":false,"sumario":"Convenio de colaboración a suscribir entre la Comunidad Autónoma de la Región de Murcia, a través del Instituto Murciano de Acción Social y el Ayuntamiento de Alcantarilla, para la prestación, dentro de su ámbito territorial, del servicio de ayuda a domicilio para personas dependientes.","numero":6618,"ano":2020,"anunciante":"Consejería de Mujer, Igualdad, LGTBI, Familias y Política Social","subAnunciante":"","apartado":"I. Comunidad Autónoma","subApartado":"3. Otras Disposiciones","categoriaCompleta":"Convenios","fechaPublicacion":"21-11-2020","numeroBoletin":271,"paginas":11,"tamano":371.31,"numAccesos":29},{"id":789286,"historico":false,"sumario":"Convenio de colaboración a suscribir entre la Comunidad Autónoma de la Región de Murcia, a través del Instituto Murciano de Acción Social y el Ayuntamiento de Puerto Lumbreras, para la prestación, dentro de su ámbito territorial, del servicio de ayuda a domicilio para personas dependientes.","numero":6619,"ano":2020,"anunciante":"Consejería de Mujer, Igualdad, LGTBI, Familias y Política Social","subAnunciante":"","apartado":"I. Comunidad Autónoma","subApartado":"3. Otras Disposiciones","categoriaCompleta":"Convenios","fechaPublicacion":"21-11-2020","numeroBoletin":271,"paginas":12,"tamano":365.48,"numAccesos":25},{"id":789287,"historico":false,"sumario":"Convenio entre la Comunidad Autónoma de la Región de Murcia, a través del Instituto Murciano de Acción Social y la Mancomunidad de Servicios Sociales del Río Mula, para regular los compromisos y condiciones aplicables a la concesión de una subvención nominativa destinada a mantenimiento de centro de atención temprana.","numero":6620,"ano":2020,"anunciante":"Consejería de Mujer, Igualdad, LGTBI, Familias y Política Social","subAnunciante":"","apartado":"I. Comunidad Autónoma","subApartado":"3. Otras Disposiciones","categoriaCompleta":"Convenios","fechaPublicacion":"21-11-2020","numeroBoletin":271,"paginas":20,"tamano":463.49,"numAccesos":23},{"id":789288,"historico":false,"sumario":"Modificación de la convocatoria de ayudas de la Orden de 11 de noviembre de 2020 de la Consejería de Turismo, Juventud y Deportes por la que se aprueban las bases reguladoras de las ayudas a guías de turismo y pymes, micropymes y autónomos con actividad de turismo activo, agencia de viajes, organización de congresos u hostelería para paliar pérdidas por el COVID-19, de la estrategia reactiva turismo y hostelería, modificada por orden de 19 de noviembre de 2020 y se abre nuevo plazo de presentación de solicitudes.","numero":6621,"ano":2020,"anunciante":"Consejería de Turismo, Juventud y Deportes","subAnunciante":"Instituto de Turismo de la Región de Murcia","apartado":"I. Comunidad Autónoma","subApartado":"3. Otras Disposiciones","categoriaCompleta":"Ayudas/subvenciones - Bases reguladoras/Convocatorias","fechaPublicacion":"21-11-2020","numeroBoletin":271,"paginas":3,"tamano":322.25,"numAccesos":123},{"id":789289,"historico":false,"sumario":"Resolución de la Dirección General de Regeneración y Modernización Administrativa por la que se fija el calendario de días inhábiles a efectos de cómputo de plazos en el ámbito de la Administración de la Comunidad Autónoma de la Región de Murcia para el año 2021.","numero":6622,"ano":2020,"anunciante":"Consejería de Transparencia, Participación y Administración Pública","subAnunciante":"","apartado":"I. Comunidad Autónoma","subApartado":"3. Otras Disposiciones","categoriaCompleta":null,"fechaPublicacion":"21-11-2020","numeroBoletin":271,"paginas":4,"tamano":528.37,"numAccesos":73},{"id":789290,"historico":false,"sumario":"Orden de 20 de noviembre de 2020 de la Consejería de Salud, por la que se prorroga parcialmente la vigencia de las medidas generales, de carácter temporal, para hacer frente a la epidemia de COVID-19 en la Región de Murcia contenidas en la Orden de 9 de octubre de 2020 y en la Orden 26 de octubre de 2020 y se adoptan medidas extraordinarias y temporales de restricción en determinados ámbitos sectoriales.","numero":6623,"ano":2020,"anunciante":"Consejería de Salud","subAnunciante":"","apartado":"I. Comunidad Autónoma","subApartado":"3. Otras Disposiciones","categoriaCompleta":null,"fechaPublicacion":"21-11-2020","numeroBoletin":271,"paginas":9,"tamano":353.37,"numAccesos":928},{"id":789291,"historico":false,"sumario":"Resolución de la Dirección General de Diálogo Social y Bienestar Laboral, por la que se dispone la inscripción en el registro y publicación del Acuerdo de convenio colectivo de la empresa ZUKAN,S.L.","numero":6624,"ano":2020,"anunciante":"Consejería de Empleo, Investigación y Universidades","subAnunciante":"","apartado":"I. Comunidad Autónoma","subApartado":"3. Otras Disposiciones","categoriaCompleta":"Convenios","fechaPublicacion":"21-11-2020","numeroBoletin":271,"paginas":39,"tamano":1035.97,"numAccesos":29},{"id":789292,"historico":false,"sumario":"Divorcio contencioso 367/2019.","numero":6625,"ano":2020,"anunciante":"Servicio Común Procesal de Ordenación del Procedimiento de Murcia","subAnunciante":"Primera Instancia número Tres de Murcia","apartado":"III. Administración de Justicia","subApartado":null,"categoriaCompleta":"Autos","fechaPublicacion":"21-11-2020","numeroBoletin":271,"paginas":1,"tamano":308.03,"numAccesos":33},{"id":789293,"historico":false,"sumario":"Procedimiento ordinario 314/2019.","numero":6626,"ano":2020,"anunciante":"Servicio Común Procesal de Ordenación del Procedimiento Social de Murcia","subAnunciante":"De lo Social número Tres de Murcia","apartado":"III. Administración de Justicia","subApartado":null,"categoriaCompleta":"Autos","fechaPublicacion":"21-11-2020","numeroBoletin":271,"paginas":2,"tamano":308.95,"numAccesos":27},{"id":789294,"historico":false,"sumario":"Despido objetivo individual 221/2020.","numero":6627,"ano":2020,"anunciante":"Servicio Común Procesal de Ordenación del Procedimiento Social de Murcia","subAnunciante":"De lo Social número Cinco de Murcia","apartado":"III. Administración de Justicia","subApartado":null,"categoriaCompleta":"Despidos/Ceses","fechaPublicacion":"21-11-2020","numeroBoletin":271,"paginas":3,"tamano":313.77,"numAccesos":21},{"id":789295,"historico":false,"sumario":"Procedimiento 518/2020.","numero":6628,"ano":2020,"anunciante":"De lo Social número Tres de Las Palmas de Gran Canaria","subAnunciante":"","apartado":"III. Administración de Justicia","subApartado":null,"categoriaCompleta":"Autos","fechaPublicacion":"21-11-2020","numeroBoletin":271,"paginas":1,"tamano":302.58,"numAccesos":23}]}

enter image description here

Booboo
  • 18,421
  • 2
  • 23
  • 40
  • Hi, sorry for the late response, life gets in the way. I don't have time now to check if your response is what I'm looking for, but I wanted to thank you for the detailed response! Will update this weekend when I have time to go on on this project! Thanks again! – Alberefe Nov 24 '20 at 15:26
  • Hi, Sorry again for late response. Your code didn't fix my issue, but your explanation did help me find the solution by showing me what was happening and how to get over it. Thanks alot! – Alberefe Dec 11 '20 at 17:19