diff --git a/docs/supported_publishers.md b/docs/supported_publishers.md
index 663d7da6..19e85b65 100644
--- a/docs/supported_publishers.md
+++ b/docs/supported_publishers.md
@@ -967,6 +967,38 @@
+## ES-Publishers
+
+
+
+
+ Class |
+ Name |
+ URL |
+ Missing Attributes |
+ Additional Attributes |
+
+
+
+
+
+ ElPais
+ |
+
+ El País
+ |
+
+
+ elpais.com
+
+ |
+ |
+ |
+
+
+
+
+
## FR-Publishers
diff --git a/src/fundus/publishers/__init__.py b/src/fundus/publishers/__init__.py
index 0f2c56ac..48aff5ab 100644
--- a/src/fundus/publishers/__init__.py
+++ b/src/fundus/publishers/__init__.py
@@ -8,6 +8,7 @@
from fundus.publishers.ch import CH
from fundus.publishers.cn import CN
from fundus.publishers.de import DE
+from fundus.publishers.es import ES
from fundus.publishers.fr import FR
from fundus.publishers.ind import IND
from fundus.publishers.jp import JP
@@ -66,4 +67,5 @@ class PublisherCollection(metaclass=PublisherCollectionMeta):
ind = IND
no = NO
ca = CA
+ es = ES
jp = JP
diff --git a/src/fundus/publishers/es/__init__.py b/src/fundus/publishers/es/__init__.py
new file mode 100644
index 00000000..57486aa7
--- /dev/null
+++ b/src/fundus/publishers/es/__init__.py
@@ -0,0 +1,22 @@
+import datetime
+
+from dateutil.rrule import MONTHLY, rrule
+
+from fundus.publishers.base_objects import Publisher, PublisherGroup
+from fundus.publishers.es.el_pais import ElPaisParser
+from fundus.scraping.url import RSSFeed, Sitemap
+
+
+class ES(metaclass=PublisherGroup):
+ ElPais = Publisher(
+ name="El País",
+ domain="https://elpais.com/",
+ parser=ElPaisParser,
+ sources=[RSSFeed("https://feeds.elpais.com/mrss-s/pages/ep/site/elpais.com/portada")]
+ + [
+ Sitemap(f"https://elpais.com/sitemaps/{d.year}/{str(d.month).zfill(2)}/sitemap_0.xml")
+ for d in reversed(
+ list(rrule(MONTHLY, dtstart=datetime.datetime(1976, 5, 1), until=datetime.datetime.now()))
+ )
+ ],
+ )
diff --git a/src/fundus/publishers/es/el_pais.py b/src/fundus/publishers/es/el_pais.py
new file mode 100644
index 00000000..60c4781b
--- /dev/null
+++ b/src/fundus/publishers/es/el_pais.py
@@ -0,0 +1,44 @@
+import datetime
+from typing import List, Optional
+
+from lxml.etree import XPath
+
+from fundus.parser import ArticleBody, BaseParser, ParserProxy, attribute
+from fundus.parser.utility import (
+ extract_article_body_with_selector,
+ generic_author_parsing,
+ generic_date_parsing,
+ generic_topic_parsing,
+)
+
+
+class ElPaisParser(ParserProxy):
+ class V1(BaseParser):
+ _paragraph_selector = XPath("//div[@class='a_c clearfix']/p")
+ _subheadline_selector = XPath("//div[@class='a_c clearfix']/h3")
+ _summary_selector = XPath("//div[@class='a_e_txt _df']//h2")
+
+ @attribute
+ def body(self) -> Optional[ArticleBody]:
+ return extract_article_body_with_selector(
+ self.precomputed.doc,
+ paragraph_selector=self._paragraph_selector,
+ subheadline_selector=self._subheadline_selector,
+ summary_selector=self._summary_selector,
+ )
+
+ @attribute
+ def publishing_date(self) -> Optional[datetime.datetime]:
+ return generic_date_parsing(self.precomputed.ld.bf_search("datePublished"))
+
+ @attribute
+ def title(self) -> Optional[str]:
+ return self.precomputed.ld.bf_search("headline")
+
+ @attribute
+ def authors(self) -> List[str]:
+ return generic_author_parsing(self.precomputed.ld.bf_search("author"))
+
+ @attribute
+ def topics(self) -> List[str]:
+ return generic_topic_parsing(self.precomputed.ld.bf_search("keywords"))
diff --git a/tests/resources/parser/test_data/es/ElPais.json b/tests/resources/parser/test_data/es/ElPais.json
new file mode 100644
index 00000000..ce3fc09b
--- /dev/null
+++ b/tests/resources/parser/test_data/es/ElPais.json
@@ -0,0 +1,52 @@
+{
+ "V1": {
+ "authors": [
+ "María R. Sahuquillo"
+ ],
+ "body": {
+ "summary": [
+ "La Comisión endurecerá la regulación sobre deportaciones mientras analiza el polémico modelo de Italia en Albania como una de las “soluciones innovadoras” frente a la migración irregular"
+ ],
+ "sections": [
+ {
+ "headline": [],
+ "paragraphs": [
+ "La presidenta de la Comisión Europea, Ursula von der Leyen, es cada vez más clara en su giro a la derecha en inmigración, siguiendo la senda de un número creciente de países comunitarios. Bruselas sondea ahora la apertura de centros de deportación fuera de la UE, para enviar allí a los migrantes en situación irregular, en la senda del modelo que Italia acaba de estrenar en Albania. Algo que podría encajar en la reforma de la regulación sobre deportaciones, para endurecerla, que prepara el Ejecutivo comunitario. Así lo explica Von der Leyen a los líderes de los Estados miembros en una carta enviada en vísperas de un Consejo Europeo en el que también se hablará de inmigración, un asunto cada vez más caliente en una Unión Europea en la que avanzan la derecha y el populismo, y en la que el debate sobre los solicitantes de asilo inunda la política nacional.",
+ "“Deberíamos seguir explorando posibles formas de avanzar en la idea de desarrollar centros de retorno fuera de la UE, especialmente en vista de una nueva propuesta de retorno”, dice Von der Leyen en la misiva. La jefa del Ejecutivo comunitario recoge el guante de un gran grupo de socios que, liderados por Dinamarca, reclamaron hace unos meses que se explorasen “soluciones innovadoras” para combatir la inmigración irregular. Esas fórmulas incluyen el modelo de campos de deportación fuera de territorio comunitario —pero gestionados con personal europeo—, como el que ha abierto el Gobierno italiano, encabezado por la ultraderechista Giorgia Meloni, en Albania. Von der Leyen remarca que ese modelo servirá para “extraer lecciones prácticas”. Una portavoz comunitaria remarcó este martes que para lanzar ese modelo a nivel europeo, no obstante, hace falta una reforma de la regulación sobre deportaciones, como la presidenta de la Comisión anuncia en su carta.",
+ "La familia política de Von der Leyen, el Partido Popular Europeo (PPE), apoyaba la medida de crear campos de deportación fuera de la UE en su programa electoral para las elecciones europeas del pasado junio, e incluso iba más allá al abrazar el llamado modelo Ruanda de Reino Unido, una política de expulsiones que contempla enviar a ese país africano, con el que Londres ha firmado un acuerdo, a personas en situación irregular cuando las autoridades británicas no hubieran estudiado todavía su caso, según alertó el Consejo de Europa.",
+ "La mayoría de Estados miembros reclaman, además, un endurecimiento de las normas que regulan las expulsiones para tratar de aumentarlas. Tal y como pedían España, Francia y Alemania, la Comisión Europea incide también en la necesidad de que se acelere la aplicación de las directivas que componen el pacto migratorio, que establece un reparto solidario entre los socios de una cuota de solicitantes de asilo y un pago de unos 20.000 euros a una cesta común por refugiado rechazado. “Este es un conjunto de soluciones europeas para un desafío europeo”, dice Von der Leyen.",
+ "La idea de crear centros de deportación como el que ha impulsado Meloni revolotea en la UE desde hace tiempo. Pero hasta hace unos meses Bruselas se había mostrado reacia. Cuando se puso la idea sobre la mesa hace años, la Comisión la rechazó aludiendo a la legislación comunitaria. Ahora está abierta a explorarlo. Tampoco criticó a Italia con su idea de crear campos de deportación en Albania: alegan que, pese a encontrarse en un país extracomunitario, son de alguna manera espacios italianos, ya que están gestionados con personal italiano y según la norma italiana. Esta semana, el Gobierno de Meloni ha enviado a uno de esos centros a primer grupo de 16 solicitantes de asilo (de Bangladés y Egipto) rescatados en el mar. En Albania deberán esperar una respuesta a su solicitud de protección internacional.",
+ "Pese a la apertura de Von der Leyen a legislar para crear centros de deportación fuera de la UE, más allá del posible impedimento legal, la principal barrera es dónde instalarlos. Algunos Estados miembros quieren que se presione a los países de los Balcanes, candidatos a ingresar en el club comunitario, para que accedan a acogerlos, siguiendo el modelo de Albania. Por ahora, no obstante, se han mostrado reacios, según fuentes diplomáticas."
+ ]
+ },
+ {
+ "headline": [
+ "Denuncias de ONG"
+ ],
+ "paragraphs": [
+ "Distintas organizaciones de derechos humanos han denunciado estas controvertidas instalaciones. El debate, además, se calienta cuando vuelven a aflorar denuncias de que países como Turquía, con el que la Unión mantiene uno de sus acuerdos migratorios, ha financiado con dinero europeo centros de deportación para extranjeros —solicitantes de asilo y no solicitantes— donde se han registrado un enorme número de violaciones de los derechos humanos. Así lo ha revelado una investigación en la que ha participado EL PAÍS.",
+ "El acuerdo con Turquía “sigue siendo clave”, dice la jefa del Ejecutivo comunitario. Bruselas se lava las manos sobre las denuncias de malos tratos. La conservadora alemana insiste en que programará un nuevo paquete de 1.000 millones de euros para los refugiados sirios en Turquía y para “apoyar” a Ankara en la gestión de fronteras y la migración.",
+ "La apuesta de la UE sigue siendo firmar acuerdos con países extracomunitarios para que frenen las salidas hacia territorio de la UE a cambio de fondos, como el controvertido pacto firmado con Túnez, Egipto o Mauritania. Ahora, con el aumento del 56% de las llegadas este año (comparadas con 2023) a España por las rutas del Mediterráneo y el Atlántico, Bruselas quiere apuntalar ese acuerdo con Mauritania e “incentivar” otros con Senegal Y Malí, “a pesar de la complejidad de las relaciones”, dice Von der Leyen.",
+ "Bruselas apuesta, sobre todo, por reformar la regulación sobre deportaciones para tratar de aumentarlas. Pero también este asunto sigue siendo uno de los desafíos principales, ya que algunos países de origen no admiten las devoluciones de personas en situación irregular a las que se ha denegado el derecho al asilo por falta de convenios, regulación y otros problemas burocráticos, incluso dentro de los propios Estados miembros.",
+ "“La política migratoria de la UE solo puede ser sostenible si se devuelve de manera efectiva a quienes no tienen derecho a permanecer en la Unión. Sin embargo, tan solo cerca del 20% de los nacionales de terceros países a los que se ha ordenado salir han regresado realmente”, dice Von der Leyen en su carta.",
+ "Cada vez más gobiernos han endurecido su política y su discurso sobre inmigración. Ha ocurrido, por ejemplo, en Francia y en Alemania. Casi al mismo ritmo, el sistema de libre circulación Schengen peligra, con cada vez más cierres de fronteras. El primer ministro polaco, el liberal de centroderecha Donald Tusk, anunció el pasado sábado que suspendía el derecho al asilo en ese país escudándose en la entrada de migrantes irregulares desde Bielorrusia. “Nuestro derecho y nuestro deber es proteger la frontera polaca y europea”, dijo el jefe de Gobierno polaco. Bruselas le ha recordado que debe cumplir la normativa europea, pero lo ha hecho tímidamente. Finlandia ya cerró su frontera con Rusia hace meses, alegando que el Kremlin enviaba migrantes para desestabilizar el país. El consenso sobre la política de asilo se resquebraja."
+ ]
+ }
+ ]
+ },
+ "publishing_date": "2024-10-15 08:22:57+02:00",
+ "title": "Bruselas sondea la apertura de centros de deportación fuera de la Unión Europea ",
+ "topics": [
+ "Migración",
+ "Migrantes",
+ "Unión Europea",
+ "Comisión Europea",
+ "Ursula von der Leyen",
+ "Consejo Europeo",
+ "Albania",
+ "Italia",
+ "Derechos humanos",
+ "Inmigrantes"
+ ]
+ }
+}
diff --git a/tests/resources/parser/test_data/es/ElPais_2024_10_15.html.gz b/tests/resources/parser/test_data/es/ElPais_2024_10_15.html.gz
new file mode 100644
index 00000000..403ee8b1
Binary files /dev/null and b/tests/resources/parser/test_data/es/ElPais_2024_10_15.html.gz differ
diff --git a/tests/resources/parser/test_data/es/meta.info b/tests/resources/parser/test_data/es/meta.info
new file mode 100644
index 00000000..7d3c0bb7
--- /dev/null
+++ b/tests/resources/parser/test_data/es/meta.info
@@ -0,0 +1,6 @@
+{
+ "ElPais_2024_10_15.html.gz": {
+ "url": "https://elpais.com/internacional/2024-10-15/bruselas-sondea-la-apertura-de-centros-de-deportacion-fuera-de-la-union-europea.html",
+ "crawl_date": "2024-10-15 17:43:35.457824"
+ }
+}