-
Notifications
You must be signed in to change notification settings - Fork 78
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
168 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
import re | ||
from datetime import datetime | ||
from typing import List, Optional | ||
|
||
from lxml.etree import XPath | ||
|
||
from fundus.parser import ArticleBody, BaseParser, Image, ParserProxy, attribute | ||
from fundus.parser.utility import ( | ||
extract_article_body_with_selector, | ||
generic_author_parsing, | ||
generic_date_parsing, | ||
generic_topic_parsing, | ||
image_extraction, | ||
) | ||
|
||
|
||
class CorriereDellaSeraParser(ParserProxy): | ||
class V1(BaseParser): | ||
# Selectors for article body parts | ||
_summary_selector = XPath("//p[contains(@class, 'summary')]") | ||
_paragraph_selector = XPath("//p[@class='chapter-paragraph' and text()]") | ||
_subheadline_selector = XPath("//h2[contains(@class, 'native-summary-content')]") | ||
|
||
@attribute | ||
def title(self) -> Optional[str]: | ||
# Get the headline from og:title meta tag | ||
return self.precomputed.ld.bf_search("headline") | ||
|
||
@attribute | ||
def body(self) -> Optional[ArticleBody]: | ||
# Extract article body using utility function | ||
return extract_article_body_with_selector( | ||
self.precomputed.doc, | ||
summary_selector=self._summary_selector, | ||
paragraph_selector=self._paragraph_selector, | ||
subheadline_selector=self._subheadline_selector, | ||
) | ||
|
||
@attribute | ||
def authors(self) -> List[str]: | ||
# Extract authors from schema.org NewsArticle data | ||
authors = self.precomputed.ld.xpath_search("//NewsArticle/author") | ||
if authors: | ||
return generic_author_parsing(authors) | ||
return [] | ||
|
||
@attribute | ||
def publishing_date(self) -> Optional[datetime]: | ||
# Use scalar parameter for direct value | ||
date_str = self.precomputed.ld.xpath_search("//NewsArticle/datePublished", scalar=True) | ||
return generic_date_parsing(date_str) | ||
|
||
@attribute | ||
def images(self) -> List[Image]: | ||
return image_extraction( | ||
doc=self.precomputed.doc, | ||
paragraph_selector=self._paragraph_selector, | ||
author_selector=re.compile(r"\(foto (?P<credits>.*)\)\s*$"), | ||
) |
77 changes: 77 additions & 0 deletions
77
tests/resources/parser/test_data/it/CorriereDellaSera.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
{ | ||
"V1": { | ||
"authors": [ | ||
"Viviana Mazza" | ||
], | ||
"body": { | ||
"summary": [ | ||
"La premier italiana Giorgia Meloni è partita (a sorpresa) per una missione in Florida dal presidente eletto degli Usa. Segreta l'agenda dell'incontro, ma il New York Times rivela:«La premier ha premuto sul caso di Cecilia Sala»" | ||
], | ||
"sections": [ | ||
{ | ||
"headline": [], | ||
"paragraphs": [ | ||
"DALLA NOSTRA CORRISPONDENTENEW YORK - Giorgia Meloni è arrivata a Mar-a-Lago alle 19:29 locali, dopo l’atterraggio del suo volo partito da Ciampino all’aeroporto di Palm Beach, per una missione lampo - e nata nel riserbo più assoluto - che l'ha portata a incontrare il presidente eletto degli Stati Uniti, Donald Trump.", | ||
"In una delle prime foto scattate dagli ospiti nel salone della residenza in Florida - che è anche un resort - , si vede la presidente del Consiglio italiana insieme a Trump. Al loro fianco, il senatore della Florida Marco Rubio nominato segretario di Stato da Trump, il deputato della Florida Mike Waltz, nominato consigliere per la sicurezza nazionale, Scott Bessent, nominato segretario del Tesoro, l’ambasciatrice d’Italia negli Usa Mariangela Zappia e l’imprenditore texano Tilman Fertitta, nominato ambasciatore Usa in Italia.", | ||
"Trump ha salutato gli ospiti nel salone d'onore, predisposto per la proiezione di un film e, seguito da Meloni e dalla delegazione, si è recato al piano di sopra, tornando intorno alle nove di sera. Non si è visto invece Elon Musk - che potrebbe però aver giocato un ruolo per l'organizzazione dell'incontro." | ||
] | ||
}, | ||
{ | ||
"headline": [ | ||
"Trump su Meloni: «Ha preso d'assalto l'Europa». Poi il film" | ||
], | ||
"paragraphs": [ | ||
"«È molto emozionante, sono qui con una donna fantastica, la premier italiana», ha detto Trump agli ospiti riuniti nel salone. «Ha davvero preso d'assalto l'Europa». Rubio, dando il benvenuto alla premier, l'ha poi definita: «Un'ottima alleata, un leader forte».", | ||
"Subito dopo, Trump, Meloni, Rubio, Waltz e Bessent si sono seduti tra il pubblico e fino alle 10:20 di sera hanno assistito alla prima del documentario «Eastman Dilemma» sulle elezioni nel 2020, in cui si accusa il sistema giudiziario di aver preso di mira conservatori come John Eastman, legale di Trump che ha perso l'idoneità a esercitare la professione di avvocato presso i tribunali dello Stato della California ed è stato citato come co-cospiratore nell'atto di accusa federale presentato contro Trump per i suoi tentativi di impedire la certificazione dell'elezione di Biden." | ||
] | ||
}, | ||
{ | ||
"headline": [ | ||
"Il caso Cecilia Sala: «Meloni ha premuto aggressivamente per lei»" | ||
], | ||
"paragraphs": [ | ||
"L’incontro di Meloni con Trump sarebbe stata anche un’opportunità per parlare del caso di Cecilia Sala, giornalista italiana del Foglio e di Chora Media detenuta dall’Iran dal 19 dicembre scorso, oltre che di altri temi che stanno a cuore all’Italia e all’Europa come i dazi e la guerra in Ucraina.", | ||
"Il New York Times scriveva in serata: «L'Iran ha arrestato spesso stranieri e individui con doppia cittadinanza per scambiarli con denaro e altre persone. Una persona informata sull'incontro ha detto che Meloni ha premuto aggressivamente per questo».", | ||
"Il 16 dicembre, a Milano, era stato fermato Abedini Najafabani, accusato dagli Stati Uniti di aver supportato i pasdaran di Teheran nell’acquisizione di componenti tecnologiche a duplice uso civile e militare montate sui droni in uso al Corpo dei Guardiani della Rivoluzione: in particolare il sistema di navigazione del modello di drone che il 28 gennaio 2024 uccise in un avamposto giordano tre soldati americani e ferì altre 38 persone. Per questo, gli Usa - che hanno arrestato anche Mahdi Mohammad Sadeghi, ingegnere iraniano il cui caso è legato a doppio filo a quello di Abedini - chiedono all'Italia l'estradizione dell'iraniano, che rischia l'ergastolo.", | ||
"Tre giorni dopo, a Teheran, l'Iran ha arrestato Cecilia Sala, che da allora si trova nel carcere di Evin, in isolamento, senza che le sia stata mossa alcuna accusa formale.", | ||
"Nei giorni scorsi, l'Iran ha chiesto all'Italia il rilascio di Abedini, mentre l'Italia ha protestato per la detenzione - senza alcuna motivazione - della reporter.", | ||
"Gli Stati Uniti hanno finora chiesto esplicitamente ai magistrati italiani di non concedere ad Abedini i domiciliari «a causa della pericolosità del soggetto».", | ||
"L’incontro tra Meloni e Trump avviene cinque giorni prima della visita del presidente uscente Joe Biden, l’attuale presidente americano, a Roma e due settimane prima dell’insediamento di Trump alla Casa Bianca.", | ||
"Dopo la cena e l'incontro con Trump, Giorgia Meloni ha lasciato gli Stati Uniti per tornare a Roma. Secondo il sito Flightradar24, l'aereo della premier italiana è ripartito poco dopo le 23 locali (le cinque del mattino di oggi in Italia) dall'aeroporto di Palm Beach." | ||
] | ||
}, | ||
{ | ||
"headline": [ | ||
"Le parole di Guido Lombardi e la battuta su Rubio" | ||
], | ||
"paragraphs": [ | ||
"L’imprenditore George Guido Lombardi, che conosce Trump dal ’94, quando ha acquistato un appartamento alla Trump Tower e ora vive soprattutto a Palm Beach, racconta al Corriere di aver atteso Meloni sulla porta, insieme a Rubio. «È arrivata puntualissima, alle 19:29 era già all’entrata». Lombardi ha conosciuto Meloni una decina di anni fa, prima che diventasse premier: partecipò con lei e con Giorgetti ad un evento della Camera del Commercio Italia-Usa a New York. Dopo i saluti, racconta Lombardi, «lei ha chiesto a Rubio, che di nome si chiama Marco, se è di origine italiana. Lui ha detto \"No, mio papà era cubano\", però ha aggiunto che ha fatto una ricerca sui suoi antenati e alcuni di loro venivano dalla Sardegna. Io gli ho detto che conosco Marco da tantissimo, da quando si era candidato come deputato, prima che come senatore e gli ho fatto un po’ di campagna elettorale. E Rubio ha confermato: \"Sì, mi conosce da bambino\"».", | ||
"Soddisfatto per l'iniziativa della premier si è detto Matteo Salvini. «Bene Giorgia Meloni da Donald Trump per parlare di pace, di collaborazione industriale e commerciale, di sicurezza e della liberazione di Cecilia Sala», ha scritto su X, «mentre altri in Italia e in Europa lo attaccano e lo ignorano, noi diciamo \"go Donald go\"»." | ||
] | ||
} | ||
] | ||
}, | ||
"images": [ | ||
{ | ||
"versions": [ | ||
{ | ||
"url": "https://dimages2.corriereobjects.it/files/main_image/files/fp/uploads/2025/01/05/677a43307deb3.r_d.580-548-6933.jpeg", | ||
"query_width": null, | ||
"size": { | ||
"width": 572, | ||
"height": 429 | ||
}, | ||
"type": "image/jpeg" | ||
} | ||
], | ||
"is_cover": true, | ||
"description": "Trump e Meloni a mar a lago", | ||
"caption": null, | ||
"authors": [], | ||
"position": 1449 | ||
} | ||
], | ||
"publishing_date": "2025-01-05 03:56:38+01:00", | ||
"title": "Trump accoglie Meloni a Mar-a-Lago: «Ha preso d'assalto l'Europa». Il Nyt: «La premier ha premuto aggressivamente per Cecilia Sala». Salvini: «Bene Giorgia. E noi diciamo \"go Donald go\"»" | ||
} | ||
} |
Binary file added
BIN
+35.1 KB
tests/resources/parser/test_data/it/CorriereDellaSera_2025_01_05.html.gz
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters