KWT-2024/lab/lab_09-10.ipynb

602 lines
48 KiB
Plaintext
Raw Permalink Normal View History

2024-04-13 08:20:53 +02:00
{
"cells": [
{
"cell_type": "markdown",
"id": "competitive-desire",
"metadata": {},
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Komputerowe wspomaganie tłumaczenia </h1>\n",
"<h2> 9,10. <i>Web scraping</i> [laboratoria]</h2> \n",
"<h3>Rafał Jaworski (2021)</h3>\n",
"</div>\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
]
},
{
"cell_type": "markdown",
"id": "hungarian-davis",
"metadata": {},
"source": [
"Jak dobrze wiemy, w procesie wspomagania tłumaczenia oraz w zagadnieniach przetwarzania języka naturalnego ogromną rolę pełnią zasoby lingwistyczne. Należą do nich korpusy równoległe (pamięci tłumaczeń), korpusy jednojęzyczne oraz słowniki. Bywa, że zasoby te nie są dostępne dla języka, nad którym chcemy pracować."
]
},
{
"cell_type": "markdown",
"id": "featured-moisture",
"metadata": {},
"source": [
"W tej sytuacji jest jeszcze dla nas ratunek - możemy skorzystać z zasobów dostępnych publicznie w Internecie. Na dzisiejszych zajęciach przećwiczymy techniki pobierania tekstu ze stron internetowych."
]
},
{
"cell_type": "markdown",
"id": "underlying-isaac",
"metadata": {},
"source": [
"Poniższy kod służy do ściągnięcia zawartości strony (w formacie HTML do zmiennej) oraz do wyszukania na tej stronie konkretnych elementów. Przed jego uruchomieniem należy zainstalować moduł BeautifulSoup:\n",
"`pip3 install beautifulsoup4`"
]
},
{
"cell_type": "code",
2024-05-12 23:12:15 +02:00
"execution_count": 19,
"id": "cf32e9e7",
"metadata": {},
"outputs": [],
"source": [
"import warnings\n",
"warnings.filterwarnings('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 20,
2024-04-13 08:20:53 +02:00
"id": "revolutionary-trust",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-05-12 23:12:15 +02:00
"Wypadek na Dąbrowskiego. Jedno z aut dachowało\n",
"Znów gęsty dym nad miastem\n",
"IMGW ostrzega. W 19 powiatach naszego regionu!\n",
"Kolejna inwestycja zakończona. Na samym Starym Rynku\n",
"Lech przegrał z Legią w Poznaniu. Dwa gole samobójcze\n",
"W każdym elektrycznym Volkswagenie ID znajdziemy \"kawałek Poznania\"\n",
"Takie parkomaty stawiają na poznańskich ulicach. Będzie dużo nowości. Za parkowanie zapłacimy kartą i blikiem\n",
"Policjanci publikują wizerunek i szukają jednego z klientów poznańskiego pubu\n",
"Zielone naklejki na lampach w poznańskich parkach. Co oznaczają?\n",
"Nowy sposób oszustów. Mogą pisać takie wiadomości\n",
"Szukamy Ciebie! Najlepsze oferty pracy dla osób z niepełnosprawnościami\n",
"Park przemysłowy pod Poznaniem sprzedany za 92,5 mln euro\n",
"Warta zagrała w Krakowie\n",
"\"Biały dym\" nad miastem. Po przejeździe pociągu z kibicami Legii Warszawa?\n",
"Czytelnik zwraca uwagę na kolejne niebezpieczne skrzyżowanie w Poznaniu. \"W tym miejscu nie ma znaku\"\n",
"Jeżdżą i robią ważne badania w Wielkopolsce. W maju zaplanowanych jest jeszcze 135 postojów\n",
"Pierożki Dim Sum z Para Bar Rataje ze specjalną zniżką!\n",
"Ogromna strata zakochanej kobiety. Marynarz już miał wysłać do niej walizkę\n",
"Dziś mecz podwyższonego ryzyka. Czekają nas spore utrudnienia w okolicach stadionu!\n",
"Miejsce z Poznania może zostać Cudem Polski 2024. Trwa głosowanie\n",
"Kolejna inwestycja na Starołęce. Ruszyła budowa\n",
"Część poznaniaków nie musi dziś płacić za bilet! Dla kogo darmowa komunikacja?\n",
"Nie wszyscy mieszkańcy poznańskich osiedli mogą iść dziś na wybory\n",
"Portowo - tu życie płynie\n",
"Zaginął 42-latek. \"Przed północą oddalił się w nieznanym kierunku\"\n",
"Ostatniej nocy na niebie znów rozegrał się niezwykły spektakl\n",
"Policjanci z Wildy publikują wizerunek i szukają tego mężczyzny\n",
"Czterdzieści kotów w jednym domu. Nie wszystkie żyły\n",
"ZDM nie łata dziur w jezdniach? \"Od 2 miesięcy zgłaszam i zero reakcji\"\n",
"Kino plenerowe dziś na Łazarzu. \"Za free!\"\n"
2024-04-13 08:20:53 +02:00
]
}
],
"source": [
"import requests\n",
"from bs4 import BeautifulSoup\n",
"\n",
"url='https://epoznan.pl'\n",
"\n",
"page = requests.get(url)\n",
"soup = BeautifulSoup(page.content, 'html.parser')\n",
"\n",
"headers = soup.find_all('h3', {'class':'postItem__title'})\n",
"\n",
"print('\\n'.join([header.get_text() for header in headers]))"
]
},
{
"cell_type": "markdown",
"id": "dental-combination",
"metadata": {},
"source": [
"### Ćwiczenie 1: Napisz funkcję do pobierania nazw towarów z serwisu Ceneo.pl. Typ towaru, np. telewizor, pralka, laptop jest parametrem funkcji. Wystarczy pobierać dane z pierwszej strony wyników wyszukiwania."
]
},
{
"cell_type": "code",
2024-05-12 23:12:15 +02:00
"execution_count": 21,
2024-04-13 08:20:53 +02:00
"id": "moving-clothing",
"metadata": {},
"outputs": [],
"source": [
"def get_names(article_type):\n",
2024-05-12 23:12:15 +02:00
" url = f\"https://m.ceneo.pl/;szukaj-{article_type}\"\n",
"\n",
" page = requests.get(url)\n",
" soup = BeautifulSoup(page.content, 'html.parser')\n",
"\n",
" prod_names = soup.find_all('div', {'class':'list-prod-name'})\n",
" prod_names = [prod_name.get_text().strip() for prod_name in prod_names]\n",
"\n",
" return prod_names"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "906c69bc",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Telewizor LED TCL 43P638 43 cale 4K UHD',\n",
" 'Telewizor LED LG 32LQ630B6LA 32 cale HD Ready',\n",
" 'Telewizor LED Xiaomi Mi LED TV P1 43 cale 4K UHD']"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_names('telewizor')[-3:]"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "e59d26d6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Pralka Electrolux PerfectCare 600 EW6SM404WP',\n",
" 'Pralka MPM MPM-4610-PH-03',\n",
" 'Pralka Whirlpool FFS 7259 B EE']"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_names('pralka')[-3:]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "904a7b8b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Laptop Acer Nitro 16 AN16-41 R7-7840HS/16GB/1TB/RTX4070/W11 165Hz',\n",
" 'Laptop Lenovo IdeaPad Slim 3 15ABR8 15,6\"/Ryzen5/16GB/512GB/NoOS (82XM009NPB)',\n",
" 'Laptop Dell Latitude 7640 16\"/i7/32GB/1TB/Win11 (N010L764016EMEA_VP)']"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_names('laptop')[-3:]"
2024-04-13 08:20:53 +02:00
]
},
{
"cell_type": "markdown",
"id": "mechanical-produce",
"metadata": {},
"source": [
"W ten sposób pobieramy dane z jednej strony. Nic jednak nie stoi nam na przeszkodzie, aby zasymulować przełączanie stron."
]
},
{
"cell_type": "markdown",
"id": "legitimate-corrections",
"metadata": {},
"source": [
"### Ćwiczenie 2: Zaobserwuj, jak zmienia się url strony podczas przechodzenia do kolejnych stron wyników wyszukiwania na Ceneo.pl. Wykorzystaj tę informację i uruchom funkcję get_names() na więcej niż jednej stronie wyników."
]
},
{
"cell_type": "code",
2024-05-12 23:12:15 +02:00
"execution_count": 25,
2024-04-13 08:20:53 +02:00
"id": "german-dispute",
"metadata": {},
"outputs": [],
"source": [
2024-05-12 23:12:15 +02:00
"def scrape_names(article_type: str, num_pages: int):\n",
" url = f\"https://m.ceneo.pl/;szukaj-{article_type}\"\n",
" page = requests.get(url)\n",
"\n",
" prod_names = []\n",
" for page_idx in range(1, num_pages+1):\n",
" tmp_page = requests.get(f\"{page.url};0020-30-0-0-{page_idx}.htm\")\n",
" soup = BeautifulSoup(tmp_page.content, 'html.parser')\n",
"\n",
" tmp_prod_names = soup.find_all('div', {'class':'list-prod-name'})\n",
" tmp_prod_names = [prod_name.find('span') for prod_name in tmp_prod_names]\n",
" tmp_prod_names = [prod_name.get_text().strip() for prod_name in tmp_prod_names]\n",
"\n",
" prod_names.extend(tmp_prod_names)\n",
"\n",
" return prod_names"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "6a5297e5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Telewizor LED LG 70UR80003LJ 70 cali 4K UHD',\n",
" 'Telewizor QLED Samsung QE85Q70C 85 cali 4K UHD',\n",
" 'Telewizor LED Hisense 32A4K 32 cale 4K UHD']"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scrape_names('telewizor', 3)[-3:]"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "d2203b11",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Pralka Bosch Serie 4 WGG0440EPL',\n",
" 'Pralka Haier I-Pro 3 HW90-BP14939',\n",
" 'Pralka Samsung WW11BGA046AE']"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scrape_names('pralka', 3)[-3:]"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "a600a91b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Laptop Dell Latitude 3340 13,3\"/i3/8GB/256GB/Win11 (L1333400023853SA)',\n",
" 'Laptop HP ZBook Firefly 14 G8 14\"/i7/16GB/512GB/Win10 (2C9R0EA)',\n",
" 'Laptop HP 17-CN3053 17,3\"/i5/32GB/2TB/Win11 (7F8G5UA)']"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scrape_names('laptop', 3)[-3:]"
2024-04-13 08:20:53 +02:00
]
},
{
"cell_type": "markdown",
"id": "discrete-durham",
"metadata": {},
"source": [
"Technika pobierania treści z Internetu jest szczególnie efektywnym sposobem na pozyskiwanie dużych ilości tekstu. Poniższy fragment kodu służy do ściągnięcia całości tekstu ze strony."
]
},
{
"cell_type": "code",
2024-05-12 23:12:15 +02:00
"execution_count": 29,
2024-04-13 08:20:53 +02:00
"id": "premium-button",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-05-12 23:12:15 +02:00
"Yahoo | Mail, Weather, Search, Politics, News, Finance, Sports & Videos News Today's news US Politics World Tech Reviews and deals Audio Computing Gaming Health Home Phones Science TVs Climate change Health Science 2024 election Originals The 360 Life Health COVID-19 Fall allergies Health news Mental health Relax Sexual health Studies The Unwind Parenting Family health So mini ways Style and beauty It Figures Unapologetically Horoscopes Shopping Buying guides Food Travel Autos Gift ideas Buying guides Entertainment Celebrity TV Movies Music How to Watch Interviews Videos Shopping Finance My portfolio My watchlist News Stock market Economics Earnings Crypto Politics Biden economy Personal finance Markets Stocks: most active Stocks: gainers Stocks: losers Trending tickers Futures World indices US Treasury bonds Currencies Crypto Top ETFs Top mutual funds Highest open interest Highest implied volatility Currency converter Sectors Basic materials Communication services Consumer cyclical Consumer defensive Energy Financial services Healthcare Industrials Real estate Technology Utilities Screeners Watchlists Equities ETFs Futures Index Mutual funds Analyst rating screener Technical events screener Smart money screener Top holdings screener Personal finance Credit cards Balance transfer cards Cash back cards Rewards cards Travel cards Banking CD rates Online checking High-yield savings Money market Mortgage Home equity loan HELOC Personal loans Student loans Insurance Taxes Videos ETF report FA corner Options pit Crypto Industries Sports Fantasy News Fantasy football Best Ball Pro Pick 'Em College Pick 'Em Fantasy baseball Fantasy hockey Fantasy basketball Download the app Daily fantasy NFL News Scores and schedules Standings Stats Teams Players Drafts Injuries Odds Super Bowl GameChannel Videos MLB News Scores and schedules Standings Stats Teams Players Odds Videos World Baseball Classic NBA News Draft Scores and schedules Standings Stats Teams Players Injuries Videos Odds Playoffs NHL News Scores and schedules Standings Stats Teams Players Odds Playoffs Soccer News Scores and schedules Premier League MLS NWSL Liga MX CONCACAF League Champions League La Liga Serie A Bundesliga Ligue 1 World Cup College football News Scores and schedules Standings Rankings Stats Teams Show all MMA WNBA Sportsbook NCAAF Tennis Golf NASCAR NCAAB NCAAW Boxing USFL Cycling Motorsports Olympics Horse racing GameChannel Rivals Newsletters Podcasts Videos RSS Jobs Help World Cup More news New on Yahoo Games Tech Terms Privacy Privacy & Cookie Settings Feedback US English Select edition USEnglish US y LATAMEspañol AustraliaEnglish CanadaEnglish CanadaFrançais DeutschlandDeutsch FranceFrançais 香港繁中 MalaysiaEnglish New ZealandEnglish SingaporeEnglish 台灣繁中 UKEnglish © 2024 All rights reserved. About our ads Advertising Careers Yahoo Home Yahoo Home Search query Select edition USEnglish US y LATAMEspañol AustraliaEnglish CanadaEnglish CanadaFrançais DeutschlandDeutsch FranceFrançais 香港繁中 MalaysiaEnglish New ZealandEnglish SingaporeEnglish 台灣繁中 UKEnglish News Finance Sports More News Today's news US Politics World Weather Climate change Health Science 2024 election Originals Life Health Parenting Style and beauty Horoscopes Shopping Food Travel Autos Gift ideas Buying guides Entertainment Celebrity TV Movies Music How to watch Interviews Videos Shopping Finance My portfolio Watchlists Markets News Videos Screeners Personal finance Crypto Industries Sports Fantasy NFL NBA MLB NHL College football College basketball Soccer MMA Yahoo Sports AM New on Yahoo Games Tech Selected edition USEnglish Mail Sign in Mail News Finance Sports Entertainment Life Yahoo Plus More... … Skip navigation linksSkip to main contentSkip to sidebarAdvertisementtop storiesUkraine warns situation on northern front has 'significantly worsened'The precise goal of Russia's new push in the northern Kharkiv region — which began in the early hours of Friday morning — is unclear. 'Ongoing battles in the border areas' »What is 'spaving' an
2024-04-13 08:20:53 +02:00
]
}
],
"source": [
"import re\n",
"\n",
"url = \"https://www.yahoo.com\"\n",
"\n",
"page = requests.get(url)\n",
"soup = BeautifulSoup(page.content, 'html.parser')\n",
"\n",
"# usunięcie elementów script i style\n",
"for script in soup([\"script\", \"style\"]):\n",
" script.extract() # usuń element\n",
"\n",
"# pobierz tekst\n",
"text = soup.get_text()\n",
"\n",
"# usuń wielokrotne białe znaki\n",
"text = re.sub(r\"\\s+\", \" \", text)\n",
"\n",
"print(text)"
]
},
{
"cell_type": "markdown",
"id": "assigned-necessity",
"metadata": {},
"source": [
"### Ćwiczenie 3: Napisz program do pobrania tekstu ze strony Wydziału Matematyki i Informatyki. Pobierz cały tekst ze strony głównej a następnie wyszukaj na tej stronie wszystkich linków wewnętrznych i pobierz tekst ze stron wskazywanych przez te linki. Nie zagłębiaj się już dalej.\n"
]
},
{
"cell_type": "code",
2024-05-12 23:12:15 +02:00
"execution_count": 30,
2024-04-13 08:20:53 +02:00
"id": "regulation-sheriff",
"metadata": {},
"outputs": [],
"source": [
2024-05-12 23:12:15 +02:00
"def scrape_text(soup):\n",
" # Delete script and style elements\n",
" for script in soup([\"script\", \"style\"]):\n",
" script.extract()\n",
"\n",
" # Get text\n",
" text = soup.get_text()\n",
" \n",
" return text\n",
"\n",
2024-04-13 08:20:53 +02:00
"def scrape_wmi():\n",
2024-05-12 23:12:15 +02:00
" url = \"https://wmi.amu.edu.pl/\"\n",
"\n",
" page = requests.get(url)\n",
" soup = BeautifulSoup(page.content, 'html.parser')\n",
"\n",
" # Create list to store text elements\n",
" text_elements = []\n",
"\n",
" text = scrape_text(soup)\n",
" text_elements.append(text)\n",
"\n",
" # Find all links\n",
" links = soup.find_all('a')\n",
"\n",
" # Get href from links\n",
" links = [link.get('href') for link in links]\n",
"\n",
" # Get text from links\n",
" for link in links:\n",
" try:\n",
" page = requests.get(link)\n",
" soup = BeautifulSoup(page.content, 'html.parser')\n",
" text = scrape_text(soup)\n",
" text_elements.append(text)\n",
" except:\n",
" pass\n",
" \n",
" return text_elements"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "c022577a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"109"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(scrape_wmi())"
2024-04-13 08:20:53 +02:00
]
},
{
"cell_type": "markdown",
"id": "paperback-hello",
"metadata": {},
"source": [
"Omówione wyżej techniki działają również bardzo dobrze dla zasobów słownikowych."
]
},
{
"cell_type": "markdown",
"id": "after-activity",
"metadata": {},
"source": [
"### Ćwiczenie 4: Pobierz jak najwięcej słów w języku albańskim z serwisu glosbe.com."
]
},
2024-05-12 23:12:15 +02:00
{
"cell_type": "markdown",
"id": "06428e3d",
"metadata": {},
"source": [
"Rozumiem, że w tym zadaniu nie można skorzystać z biblioteki zawierającej np słownik z polskimi wyrazami (zbyt trywialne) - dlatego skorzystam ze słów z poprzedniego zadania, użyje lematyzacji i przetłumaczę je za pomocą serwisu"
]
},
2024-04-13 08:20:53 +02:00
{
"cell_type": "code",
2024-05-12 23:12:15 +02:00
"execution_count": 44,
2024-04-13 08:20:53 +02:00
"id": "surgical-ozone",
"metadata": {},
"outputs": [],
"source": [
2024-05-12 23:12:15 +02:00
"import spacy\n",
"\n",
"def scrape_shqip(limit: int = 10):\n",
" base_url = \"https://glosbe.com/pl/sq/\"\n",
" unique_polish_words = list(set(\" \".join(scrape_wmi()).split()))\n",
" unique_polish_words = [word.lower() for word in unique_polish_words if word.isalpha()]\n",
" unique_polish_words = unique_polish_words[:limit]\n",
"\n",
" print(f\"Polish words to translate: {unique_polish_words}\", end=\"\\n\\n\\n\")\n",
"\n",
" nlp = spacy.load(\"pl_core_news_sm\")\n",
" doc = nlp(\" \".join(unique_polish_words))\n",
"\n",
" albanian_translations = {}\n",
" for word in doc:\n",
" word = word.lemma_\n",
"\n",
" url = f\"{base_url}{word}\"\n",
" page = requests.get(url)\n",
" soup = BeautifulSoup(page.content, 'html.parser')\n",
"\n",
" try:\n",
" albanian_word = soup.find('li', {'data-element':'translation'})\n",
" albanian_word = albanian_word.find('h3')\n",
" albanian_word = albanian_word.get_text().strip()\n",
"\n",
" print(f\"{word} -> {albanian_word}\")\n",
" albanian_translations[word] = albanian_word\n",
" except:\n",
" print(f\"{word} -> None\")\n",
" albanian_translations[word] = None\n",
"\n",
" return albanian_translations"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "5b7804ab",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Polish words to translate: ['samorządu', 'ilorazowe', 'dużym', 'filozofii', 'zmienione', 'załączonych', 'wynikami', 'kampusie', 'powołać', 'matematycznego', 'uz', 'ostatniej', 'stopień', 'podręczników', 'advancedbeststudentgrant', 'filmy', 'powodu', 'infrastruktura', 'sesja', 'javascritp', 'wykładowcę', 'koordynatorką', 'minimalnych', 'administracyjnych', 'symulowania', 'soil', 'indeks', 'mail', 'konfigurujemy', 'skutki', 'analizując', 'humboldt', 'zainteresowane', 'trzyletnich', 'otwartością', 'mający', 'doradczyzielony', 'ustalonej', 'przykładów', 'czajkowskiizabela', 'sławomir', 'różniczkowychseminarium', 'przygotowuje', 'zdobywali', 'wjazd', 'wspinaczkowych', 'usługę', 'danychna', 'zastępowane', 'rozproszonym']\n",
"\n",
"\n",
"samorząd -> None\n",
"ilorazowy -> None\n",
"duży -> madh\n",
"filozofia -> filozofia\n",
"zmienić -> ndryshoj\n",
"załączony -> None\n",
"wynik -> rezultat\n",
"kampus -> None\n",
"powołać -> None\n",
"matematyczny -> None\n",
"uz -> None\n",
"ostatni -> vonë\n",
"stopień -> gradë\n",
"podręcznik -> libër shkollor\n",
"advancedbeststudentgrant -> None\n",
"film -> film\n",
"powód -> arsye\n",
"infrastruktura -> Infrastruktura\n",
"sesja -> sesion\n",
"Javascritp -> None\n",
"wykładowca -> mësimdhënës\n",
"koordynatorka -> None\n",
"minimalny -> None\n",
"administracyjny -> None\n",
"symulować -> None\n",
"soil -> None\n",
"indeks -> indeks\n",
"mail -> None\n",
"konfiguriwać -> None\n",
"skutek -> rezultat\n",
"analizować -> analizoj\n",
"humboldt -> None\n",
"zainteresować -> None\n",
"trzyletni -> None\n",
"otwartość -> None\n",
"mieć -> kam\n",
"doradczyzielon -> None\n",
"ustalić -> None\n",
"przykład -> shembull\n",
"czajkowskiizabel -> None\n",
"Sławomir -> None\n",
"różniczkowychseminarium -> None\n",
"przygotowywać -> None\n",
"zdobywać -> fitoj\n",
"wjazd -> aderim\n",
"wspinaczkowy -> None\n",
"usługa -> shërbim\n",
"danychno -> None\n",
"zastępować -> None\n",
"rozproszony -> None\n"
]
}
],
"source": [
"albanian_translations = scrape_shqip(limit=50)"
2024-04-13 08:20:53 +02:00
]
}
],
"metadata": {
"author": "Rafał Jaworski",
"email": "rjawor@amu.edu.pl",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
2024-05-12 23:12:15 +02:00
"lang": "pl",
2024-04-13 08:20:53 +02:00
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
2024-05-12 23:12:15 +02:00
"version": "3.10.14"
},
"subtitle": "9,10. Web scraping",
"title": "Komputerowe wspomaganie tłumaczenia",
"year": "2021"
2024-04-13 08:20:53 +02:00
},
"nbformat": 4,
"nbformat_minor": 5
}