Skip to content

Commit 39cf171

Browse files
authored
Merge pull request #698 from flairNLP/add-pl
Add `PL`
2 parents 9ff8b51 + dfb21b7 commit 39cf171

File tree

7 files changed

+250
-0
lines changed

7 files changed

+250
-0
lines changed

docs/supported_publishers.md

+32
Original file line numberDiff line numberDiff line change
@@ -1651,6 +1651,38 @@
16511651
</table>
16521652

16531653

1654+
## PL-Publishers
1655+
1656+
<table class="publishers pl">
1657+
<thead>
1658+
<tr>
1659+
<th>Class&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</th>
1660+
<th>Name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</th>
1661+
<th>URL&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</th>
1662+
<th>Missing&#160;Attributes</th>
1663+
<th>Additional&#160;Attributes&#160;&#160;&#160;&#160;</th>
1664+
</tr>
1665+
</thead>
1666+
<tbody>
1667+
<tr>
1668+
<td>
1669+
<code>Rzeczpospolita</code>
1670+
</td>
1671+
<td>
1672+
<div>Wyborcza</div>
1673+
</td>
1674+
<td>
1675+
<a href="https://www.rp.pl/">
1676+
<span>www.rp.pl</span>
1677+
</a>
1678+
</td>
1679+
<td>&#160;</td>
1680+
<td>&#160;</td>
1681+
</tr>
1682+
</tbody>
1683+
</table>
1684+
1685+
16541686
## TR-Publishers
16551687

16561688
<table class="publishers tr">

src/fundus/publishers/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from fundus.publishers.my import MY
2020
from fundus.publishers.na import NA
2121
from fundus.publishers.no import NO
22+
from fundus.publishers.pl import PL
2223
from fundus.publishers.tr import TR
2324
from fundus.publishers.tw import TW
2425
from fundus.publishers.tz import TZ
@@ -70,6 +71,7 @@ class PublisherCollection(metaclass=PublisherCollectionMeta):
7071
be = BE
7172
tr = TR
7273
my = MY
74+
pl = PL
7375
ind = IND
7476
no = NO
7577
ca = CA

src/fundus/publishers/pl/__init__.py

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from fundus.publishers.base_objects import Publisher, PublisherGroup
2+
from fundus.publishers.pl.rzeczpospolita import RzeczpospolitaParser
3+
from fundus.scraping.url import NewsMap, Sitemap
4+
5+
6+
class PL(metaclass=PublisherGroup):
7+
Rzeczpospolita = Publisher(
8+
name="Wyborcza",
9+
domain="https://www.rp.pl/",
10+
parser=RzeczpospolitaParser,
11+
sources=[
12+
Sitemap(
13+
"https://www.rp.pl/sitemaps/sitemap.xml",
14+
),
15+
NewsMap("https://www.rp.pl/sitemaps/news-sitemap.xml"),
16+
],
17+
)
+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import datetime
2+
import re
3+
from typing import List, Optional
4+
5+
from lxml.etree import XPath
6+
7+
from fundus.parser import ArticleBody, BaseParser, Image, ParserProxy, attribute
8+
from fundus.parser.utility import (
9+
extract_article_body_with_selector,
10+
generic_author_parsing,
11+
generic_date_parsing,
12+
generic_topic_parsing,
13+
image_extraction,
14+
strip_nodes_to_text,
15+
)
16+
17+
18+
class RzeczpospolitaParser(ParserProxy):
19+
class V1(BaseParser):
20+
_paragraph_selector = XPath(
21+
"//div[contains(@class,'article--content')]//div[contains(@class,'body articleBody')]"
22+
"//p[contains(@class, 'article--paragraph')]"
23+
)
24+
_summary_selector = XPath("//div[@class='blog--subtitle ']")
25+
_subheadline_selector = XPath(
26+
"//div[contains(@class,'article--content')]//div[contains(@class,'body articleBody')]//h2"
27+
)
28+
29+
_topic_selector = XPath("//div[@data-mrf-section='Article / Tags']/a")
30+
31+
@attribute
32+
def body(self) -> Optional[ArticleBody]:
33+
return extract_article_body_with_selector(
34+
self.precomputed.doc,
35+
paragraph_selector=self._paragraph_selector,
36+
subheadline_selector=self._subheadline_selector,
37+
summary_selector=self._summary_selector,
38+
)
39+
40+
@attribute
41+
def authors(self) -> List[str]:
42+
return generic_author_parsing(self.precomputed.ld.bf_search("author"))
43+
44+
@attribute
45+
def publishing_date(self) -> Optional[datetime.datetime]:
46+
return generic_date_parsing(self.precomputed.ld.bf_search("datePublished"))
47+
48+
@attribute
49+
def title(self) -> Optional[str]:
50+
return self.precomputed.ld.bf_search("headline")
51+
52+
@attribute
53+
def topics(self) -> List[str]:
54+
topic_string = strip_nodes_to_text(self._topic_selector(self.precomputed.doc), join_on=",")
55+
if topic_string is not None:
56+
return generic_topic_parsing(topic_string, delimiter=",")
57+
return []
58+
59+
@attribute
60+
def images(self) -> List[Image]:
61+
return image_extraction(
62+
doc=self.precomputed.doc,
63+
paragraph_selector=self._paragraph_selector,
64+
image_selector=XPath("//div[@class='blog--image']//img"),
65+
upper_boundary_selector=XPath("//div[@class='row']//h1"),
66+
caption_selector=XPath("./ancestor::div[@class='blog--image']//p[@class='article--media--lead']"),
67+
author_selector=XPath("./ancestor::div[@class='blog--image']//p[@class='image--author']"),
68+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
{
2+
"V1": {
3+
"authors": [
4+
"Piotr Jendroszczyk"
5+
],
6+
"body": {
7+
"summary": [
8+
"Friedrich Merz, najpoważniejszy kandydat na kanclerza z ramienia CDU/CSU, poniósł druzgocącą porażkę w Bundestagu w sprawie zaostrzenia polityki imigracyjnej. Zamierza je wprowadzić po wyborach."
9+
],
10+
"sections": [
11+
{
12+
"headline": [],
13+
"paragraphs": [
14+
"Na trzy tygodnie przed wyborami parlamentarnymi w Niemczech przez kraj przetoczyła się prawdziwa nawałnica polityczna, której prawdziwe skutki ujawnią się już w dniu elekcji 23 lutego. Wywołały ją propozycje faktycznego zamknięcia granic RFN dla wszystkich imigrantów spoza UE, przedstawione przez prowadzących w przedwyborczych sondażach konserwatystów z CDU/CSU oraz liberałów w FDP. Wiele z tych propozycji zostało wyjętych żywcem z programu Alternatywy dla Niemiec (AfD), partii skrajnej prawicy relatywizującej niemiecką historię i wzywającej do reemigracji wszystkich przybyszów do Niemiec. Z tej przyczyny jest przedmiotem ostracyzmu na niemieckiej scenie politycznej i współpraca z nią uchodzi za zdradę niemieckiej racji stanu."
15+
]
16+
},
17+
{
18+
"headline": [
19+
"Niemcy zamykają granice dla przybyszów. „To otwarcie drzwi to piekła”"
20+
],
21+
"paragraphs": [
22+
"Zdają sobie z tego sprawę przywódcy partii chadeckich CDU/CSU oraz ugrupowania liberałów, lecz to przy pomocy głosów AfD usiłowali przeforsować w miniony piątek niezwykle drastyczną zmianę ustawy mającej zakończyć ostatecznie i definitywnie epokę otwarcia granic Niemiec dla uchodźców i imigrantów, zapoczątkowaną ponad dekadę wcześniej w czasie kryzysu imigracyjnego w słynnym zdaniu Angeli Merkel: Wir schaffen das (Poradzimy sobie). Wprawdzie kilka dni wcześniej udało się przeforsować w Bundestagu uchwałę na ten temat, lecz w czasie głosowania nad samą ustawą przeciwko było nawet grono deputowanych partii Friedricha Merza oraz FDP. Przestraszyli się nie tyle odpowiedzialności za przekształcenie Niemiec w twierdzę broniącą się przed rzeszami imigrantów, ile stygmatyzacji wynikłej nawet z nieformalnej współpracy z AfD.",
23+
"Friedrich Merz, lider CDU i pomysłodawca całego projektu, udowadniał, że zamknięcie granic dla nowych przybyszów, zarówno azylantów, jak i nielegalnych imigrantów, a nawet członków rodzin przebywających już w Niemczech cudzoziemców spoza UE, jest zwykłą koniecznością, gdyż imigrantów w kraju jest po prostu za dużo i perspektywa przyjęcia nowych przekracza możliwości zarówno organizacyjne, jak i finansowe Niemiec. SPD i częściowo nawet Zieloni nie mają nic przeciwko pewnym zmianom zasad imigracji, jednak nie tak drastycznych jak proponowane przez CDU/CSU i już tym bardziej nie przy pomocy głosów AfD.",
24+
"– Jest to otwarcie drzwi do piekła – argumentował jeden z deputowanych SPD, partii kanclerza Olafa Scholza, ostrzegając przed dopuszczeniem skrajnej prawicy do współdecydowania o losie Niemiec. AfD miałaby więc odgrywać w Niemczech taką samą rolę, jak prawicowe ugrupowanie Marine Le Pen we Francji, Partia Wolnościowa w Austrii (FPÖ) czy Partia Wolności Geerta Wildersa w Holandii. We współczesnych Niemczech nie do pomyślenia."
25+
]
26+
},
27+
{
28+
"headline": [
29+
"AfD rośnie w siłę. Kto będzie rządził w Niemczech?"
30+
],
31+
"paragraphs": [
32+
"Tym samym piątkowa debata nad imigracją przerodziła się w dyskusję nad nobilitacją AfD poprzez likwidację politycznego kordonu sanitarnego wokół tego ugrupowania. Ostatecznie Friedrich Merz wraz z CDU/CSU oraz FDP ponieśli porażkę i przynajmniej do wyborów polityka imigracyjna pozostanie taka, jak jest obecnie, już po licznych obostrzeniach rządu Olafa Scholza.",
33+
"Największym paradoksem obecnej sytuacji jest to, że właściwie wszystkie ugrupowania w Bundestagu zdają sobie sprawę z nastrojów obywateli, którzy mają do czynienia na co dzień ze skutkami polityki imigracyjnej kolejnych rządów, zwłaszcza kryminalnymi zachowaniami przybyszów. Zamach w Magdeburgu na jarmark bożonarodzeniowy z sześcioma ofiarami śmiertelnymi i ponad setką rannych imigranta z Arabii Saudyjskiej, a zwłaszcza niedawny atak pochodzącego z Afganistanu nożownika na grupkę małych dzieci w Aschaffenburgu i dwie ofiary śmiertelne, w tym dwuletniego dziecka, przelały czarę goryczy. Friedrich Merz uznał, że czas na zdecydowane działania, licząc przy tym także na zwiększenie przedwyborczej przewagi sondażowej. Zwłaszcza nad AfD, będącą obecnie – z notowaniami sięgającymi 23 proc. – sondażowo drugim, po chadecji mającej poparcie ok. 31 proc., największym ugrupowaniem politycznym Niemiec."
34+
]
35+
},
36+
{
37+
"headline": [
38+
"Czy koalicja z AfD jest możliwa?"
39+
],
40+
"paragraphs": [
41+
"Po porażce w Bundestagu Friedrich Merz zapowiedział, że na poniedziałkowym przedwyborczym zjeździe CDU wprowadzone zostaną, już po wygranych wyborach, te same regulacje, które zostały odrzucone w piątek. Chodzi o stałe kontrole graniczne i zawracanie tam nawet osób ubiegających się o azyl, nie mówiąc już o nielegalnych imigrantach, czasowy areszt dla osób zobowiązanych do opuszczenia kraju, gdyż ich wnioski azylowe zostały odrzucone.",
42+
"– Taka zapowiedź jest złożona nieco na wyrost, gdyż nie jest jasne, czy na podobne zmiany wyrazi zgodę partner koalicyjny – mówi „Rzeczpospolitej” Jochen Stadt, socjolog z Wolnego Uniwersytetu w Berlinie. Jego zdaniem nie ma mowy o utworzeniu przez CDU/CSU koalicji rządowej z AfD. Najbardziej prawdopodobnym partnerem będzie więc SPD z notowaniami sięgającymi 17 proc., z którą trzeba będzie uzgodnić wszystkie punkty programu rządowego, w tym sprawy imigracyjne.",
43+
"Trudno sobie dzisiaj wyobrazić, że SPD zgodzi się na odsyłanie bezpośrednio na granicach osób składających wnioski azylowe, gdyż wiązałoby się to z naruszeniem zarówno prawa międzynarodowego, jak i ustawy zasadniczej RFN. To samo dotyczy aresztu wszystkich osób podlegających deportacji. Takich osób jest obecnie w Niemczech ponad 200 tys. Zdaniem Jochena Stadta zaostrzenie obecnej polityki imigracyjnej jest jednak nieuniknione, gdyż opowiada się za tym zdecydowana większość obywateli. W Niemczech znajduje się obecnie 3,5 mln osób podlegających ochronie prawno-międzynarodowej. Większość z nich przybyła w ostatnim dziesięcioleciu, głównie z Syrii."
44+
]
45+
}
46+
]
47+
},
48+
"images": [
49+
{
50+
"versions": [
51+
{
52+
"url": "https://i.gremicdn.pl/image/free/5b19241f05cce3d765edcd5ebfd3a4db/?t=crop:4261:2642:nowe:0:0,resize:fill:375:234,enlarge:1",
53+
"query_width": "min-width:0",
54+
"size": null,
55+
"type": null
56+
},
57+
{
58+
"url": "https://i.gremicdn.pl/image/free/5b19241f05cce3d765edcd5ebfd3a4db/?t=crop:4261:2642:nowe:0:0,resize:fill:750:468,enlarge:1",
59+
"query_width": "min-width:0",
60+
"size": null,
61+
"type": null
62+
},
63+
{
64+
"url": "https://i.gremicdn.pl/image/free/5b19241f05cce3d765edcd5ebfd3a4db/?t=crop:4261:2642:nowe:0:0,resize:fill:1896:1186,enlarge:1",
65+
"query_width": "min-width:1353",
66+
"size": null,
67+
"type": null
68+
},
69+
{
70+
"url": "https://i.gremicdn.pl/image/free/5b19241f05cce3d765edcd5ebfd3a4db/?t=crop:4261:2642:nowe:0:0,resize:fill:948:593,enlarge:1",
71+
"query_width": "min-width:1353",
72+
"size": null,
73+
"type": null
74+
},
75+
{
76+
"url": "https://i.gremicdn.pl/image/free/5b19241f05cce3d765edcd5ebfd3a4db/?t=crop:4261:2642:nowe:0:0,resize:fill:408:255,enlarge:1",
77+
"query_width": "min-width:431",
78+
"size": null,
79+
"type": null
80+
},
81+
{
82+
"url": "https://i.gremicdn.pl/image/free/5b19241f05cce3d765edcd5ebfd3a4db/?t=crop:4261:2642:nowe:0:0,resize:fill:816:510,enlarge:1",
83+
"query_width": "min-width:431",
84+
"size": null,
85+
"type": null
86+
},
87+
{
88+
"url": "https://i.gremicdn.pl/image/free/5b19241f05cce3d765edcd5ebfd3a4db/?t=crop:4261:2642:nowe:0:0,resize:fill:1248:780,enlarge:1",
89+
"query_width": "min-width:705",
90+
"size": null,
91+
"type": null
92+
},
93+
{
94+
"url": "https://i.gremicdn.pl/image/free/5b19241f05cce3d765edcd5ebfd3a4db/?t=crop:4261:2642:nowe:0:0,resize:fill:624:390,enlarge:1",
95+
"query_width": "min-width:705",
96+
"size": null,
97+
"type": null
98+
}
99+
],
100+
"is_cover": true,
101+
"description": "Friedrich Merz",
102+
"caption": "Friedrich Merz",
103+
"authors": [
104+
"REUTERS/Nadja Wohlleben"
105+
],
106+
"position": 234
107+
}
108+
],
109+
"publishing_date": "2025-02-02 21:52:43+01:00",
110+
"title": "Niemcy. Stałe zamknięcie granic jedynie kwestią czasu",
111+
"topics": [
112+
"Polityka",
113+
"Partie Polityczne",
114+
"AFD",
115+
"Miejsca",
116+
"Regiony",
117+
"Europa",
118+
"Niemcy",
119+
"Społeczeństwo",
120+
"Imigranci",
121+
"Imigracja",
122+
"nielegalna imigracja"
123+
]
124+
}
125+
}
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"Rzeczpospolita_2025_02_02.html.gz": {
3+
"url": "https://www.rp.pl/polityka/art41756471-niemcy-stale-zamkniecie-granic-jedynie-kwestia-czasu",
4+
"crawl_date": "2025-02-02 23:50:31.037369"
5+
}
6+
}

0 commit comments

Comments
 (0)