From 499864f5ed2dd6ff12ca3b579ad0887c59b4376b Mon Sep 17 00:00:00 2001 From: Adrian Breiding Date: Tue, 15 Oct 2024 21:08:52 +0200 Subject: [PATCH 1/4] add `20 Minuten` --- docs/supported_publishers.md | 17 ++++++++ src/fundus/publishers/ch/__init__.py | 13 ++++++ src/fundus/publishers/ch/zwanzig_minuten.py | 39 ++++++++++++++++++ .../parser/test_data/ch/ZwanzigMinuten.json | 33 +++++++++++++++ .../ch/ZwanzigMinuten_2024_10_15.html.gz | Bin 0 -> 35706 bytes tests/resources/parser/test_data/ch/meta.info | 4 ++ 6 files changed, 106 insertions(+) create mode 100644 src/fundus/publishers/ch/zwanzig_minuten.py create mode 100644 tests/resources/parser/test_data/ch/ZwanzigMinuten.json create mode 100644 tests/resources/parser/test_data/ch/ZwanzigMinuten_2024_10_15.html.gz diff --git a/docs/supported_publishers.md b/docs/supported_publishers.md index 1246d86d..d300414c 100644 --- a/docs/supported_publishers.md +++ b/docs/supported_publishers.md @@ -227,6 +227,23 @@   + + + ZwanzigMinuten + + +
Zwanzig Minuten
+ + + + www.20min.ch + + + + topics + +   + diff --git a/src/fundus/publishers/ch/__init__.py b/src/fundus/publishers/ch/__init__.py index 14d1b23c..0e230420 100644 --- a/src/fundus/publishers/ch/__init__.py +++ b/src/fundus/publishers/ch/__init__.py @@ -1,11 +1,13 @@ from fundus.publishers.base_objects import Publisher, PublisherGroup from fundus.scraping.url import NewsMap, RSSFeed, Sitemap +from .zwanzig_minuten import ZwanzigMinutenParser from ...scraping.filter import inverse, regex_filter from .nzz import NZZParser from .srf import SRFParser from .ta import TAParser + # noinspection PyPep8Naming @@ -44,3 +46,14 @@ class CH(metaclass=PublisherGroup): ), ], ) + ZwanzigMinuten = Publisher( + name="Zwanzig Minuten", + domain="https://www.20min.ch/", + parser=ZwanzigMinutenParser, + sources=[ + NewsMap("https://www.20min.ch/sitemaps/de/news.xml"), + Sitemap("https://www.20min.ch/sitemaps/de/articles.xml"), + NewsMap("https://www.20min.ch/sitemaps/fr/news.xml"), + Sitemap("https://www.20min.ch/sitemaps/fr/articles.xml"), + ] + ) diff --git a/src/fundus/publishers/ch/zwanzig_minuten.py b/src/fundus/publishers/ch/zwanzig_minuten.py new file mode 100644 index 00000000..b94b6113 --- /dev/null +++ b/src/fundus/publishers/ch/zwanzig_minuten.py @@ -0,0 +1,39 @@ +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, +) + + +class ZwanzigMinutenParser(ParserProxy): + class V1(BaseParser): + _summary_selector = XPath("//div[@class='Article_elementLead__N3pGr']/p") + _subheadline_selector = XPath("//section[@class='Article_body__60Liu']//h2[contains(@class, 'crosshead')]") + _paragraph_selector = XPath("//div[@class='Article_elementTextblockarray__WNyan']/p") + + @attribute + def body(self) -> ArticleBody: + return extract_article_body_with_selector( + self.precomputed.doc, + summary_selector=self._summary_selector, + subheadline_selector=self._subheadline_selector, + paragraph_selector=self._paragraph_selector, + ) + + @attribute + def authors(self) -> List[str]: + return generic_author_parsing(self.precomputed.ld.bf_search("author")) + + @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.meta.get("og:title") diff --git a/tests/resources/parser/test_data/ch/ZwanzigMinuten.json b/tests/resources/parser/test_data/ch/ZwanzigMinuten.json new file mode 100644 index 00000000..85312059 --- /dev/null +++ b/tests/resources/parser/test_data/ch/ZwanzigMinuten.json @@ -0,0 +1,33 @@ +{ + "V1": { + "authors": [ + "Simon Misteli" + ], + "body": { + "summary": [ + "Laurent Vinatier wurde im Juni in Moskau festgenommen. Nun sprach ein Gericht drei Jahre Haft gegen ihn aus. Vorgeworfen wird ihm das Sammeln von Militärinformationen." + ], + "sections": [ + { + "headline": [], + "paragraphs": [ + "Anfang Juni wurde in Moskau der Franzose Laurent Vinatier festgenommen, der für das Schweizer NGO HD Centre (Zentrum für humanitären Dialog) gearbeitet hatte.", + "Vorgeworfen wird ihm das Sammeln russischer Militärinformationen und eine fehlende Registrierung als «ausländischer Agent». Nun wurde er zu drei Jahren Haft im Straflager verurteilt." + ] + }, + { + "headline": [ + "In Russland als Auslandsagent verurteilt" + ], + "paragraphs": [ + "Das Gericht verminderte somit die von der Staatsanwaltschaft verlangte Strafe. Diese forderte fünf Jahre Haft oder Zwangsarbeit. Die Verteidigung hatte eine Geldstrafe vorgeschlagen.", + "«Ich bitte Russland um Verzeihung, dass ich die Gesetze der Russischen Föderation nicht beachtet habe», sagte Vinatier. Er kenne Russland seit 20 Jahren und habe sich in das Land verliebt, so zitiert ihn die russische Nachrichtenagentur Interfax.", + "Gemäss dem russischen Gesetz über die sogenannten Auslandsagenten müssen sich Organisationen und Personen registrieren, die ganz oder teilweise aus dem Ausland finanziert werden. Das Gesetz wird oft dazu genutzt, Regierungskritiker zu verfolgen." + ] + } + ] + }, + "publishing_date": "2024-10-15 21:01:17+02:00", + "title": "Laurent Vinatier: Franzose in Russland zu drei Jahren Haft" + } +} diff --git a/tests/resources/parser/test_data/ch/ZwanzigMinuten_2024_10_15.html.gz b/tests/resources/parser/test_data/ch/ZwanzigMinuten_2024_10_15.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..722d5fdb744c4df7eb1a94a71822c7fc40fb2860 GIT binary patch literal 35706 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 Date: Tue, 15 Oct 2024 21:09:20 +0200 Subject: [PATCH 2/4] format --- src/fundus/publishers/ch/__init__.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/fundus/publishers/ch/__init__.py b/src/fundus/publishers/ch/__init__.py index 0e230420..45aa3b73 100644 --- a/src/fundus/publishers/ch/__init__.py +++ b/src/fundus/publishers/ch/__init__.py @@ -1,12 +1,11 @@ from fundus.publishers.base_objects import Publisher, PublisherGroup from fundus.scraping.url import NewsMap, RSSFeed, Sitemap -from .zwanzig_minuten import ZwanzigMinutenParser from ...scraping.filter import inverse, regex_filter from .nzz import NZZParser from .srf import SRFParser from .ta import TAParser - +from .zwanzig_minuten import ZwanzigMinutenParser # noinspection PyPep8Naming @@ -55,5 +54,5 @@ class CH(metaclass=PublisherGroup): Sitemap("https://www.20min.ch/sitemaps/de/articles.xml"), NewsMap("https://www.20min.ch/sitemaps/fr/news.xml"), Sitemap("https://www.20min.ch/sitemaps/fr/articles.xml"), - ] + ], ) From 09199a3ddcbd6a43c8352d10dc71bcafe76fc00b Mon Sep 17 00:00:00 2001 From: Adrian Breiding Date: Wed, 16 Oct 2024 23:59:10 +0200 Subject: [PATCH 3/4] fix annotations --- src/fundus/publishers/ch/zwanzig_minuten.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fundus/publishers/ch/zwanzig_minuten.py b/src/fundus/publishers/ch/zwanzig_minuten.py index b94b6113..669892d4 100644 --- a/src/fundus/publishers/ch/zwanzig_minuten.py +++ b/src/fundus/publishers/ch/zwanzig_minuten.py @@ -18,7 +18,7 @@ class V1(BaseParser): _paragraph_selector = XPath("//div[@class='Article_elementTextblockarray__WNyan']/p") @attribute - def body(self) -> ArticleBody: + def body(self) -> Optional[ArticleBody]: return extract_article_body_with_selector( self.precomputed.doc, summary_selector=self._summary_selector, From 1e08bfa66c7c76700860e4f5f5f7ca8e2fe8900f Mon Sep 17 00:00:00 2001 From: Adrian Breiding Date: Tue, 22 Oct 2024 16:57:54 +0200 Subject: [PATCH 4/4] Add summary box --- src/fundus/publishers/ch/zwanzig_minuten.py | 4 +++- tests/resources/parser/test_data/ch/ZwanzigMinuten.json | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/fundus/publishers/ch/zwanzig_minuten.py b/src/fundus/publishers/ch/zwanzig_minuten.py index 669892d4..b4ed0e5d 100644 --- a/src/fundus/publishers/ch/zwanzig_minuten.py +++ b/src/fundus/publishers/ch/zwanzig_minuten.py @@ -13,7 +13,9 @@ class ZwanzigMinutenParser(ParserProxy): class V1(BaseParser): - _summary_selector = XPath("//div[@class='Article_elementLead__N3pGr']/p") + _summary_selector = XPath( + "//div[@class='Article_elementLead__N3pGr']/p| " "//div[@type='typeInfoboxSummary']//li" + ) _subheadline_selector = XPath("//section[@class='Article_body__60Liu']//h2[contains(@class, 'crosshead')]") _paragraph_selector = XPath("//div[@class='Article_elementTextblockarray__WNyan']/p") diff --git a/tests/resources/parser/test_data/ch/ZwanzigMinuten.json b/tests/resources/parser/test_data/ch/ZwanzigMinuten.json index 85312059..74612f71 100644 --- a/tests/resources/parser/test_data/ch/ZwanzigMinuten.json +++ b/tests/resources/parser/test_data/ch/ZwanzigMinuten.json @@ -5,7 +5,10 @@ ], "body": { "summary": [ - "Laurent Vinatier wurde im Juni in Moskau festgenommen. Nun sprach ein Gericht drei Jahre Haft gegen ihn aus. Vorgeworfen wird ihm das Sammeln von Militärinformationen." + "Laurent Vinatier wurde im Juni in Moskau festgenommen. Nun sprach ein Gericht drei Jahre Haft gegen ihn aus. Vorgeworfen wird ihm das Sammeln von Militärinformationen.", + "Ein in Moskau verhafteter Franzose erhielt drei Jahre Gefängnisstrafe.", + "Er arbeitete für das Schweizer NGO HD Centre.", + "Im wird vorgeworfen, russische Militärinformationen gesammelt zu haben." ], "sections": [ {