Škrabka obrázkov v Pythone nie je len nástrojom na zdokonalenie vašich programovacích zručností. Môžete ho použiť aj na získanie obrázkov pre projekt strojového učenia alebo na generovanie miniatúr stránok. Aj keď môžu existovať iné spôsoby, ako robiť podobné veci, nič neprekoná kontrolu, ktorú máte pomocou nástrojov, ktoré si sami vytvoríte.
Naučte sa, ako zoškrabať obrázky z ľubovoľnej webovej stránky pomocou Pythonu a knižnice BeautifulSoup.
Je zoškrabovanie obrázkov legálne?
Páči sa mi to všeobecnejšie zoškrabovanie webu, zoškrabovanie obrázkov je spôsob sťahovania obsahu webových stránok. Nie je to nezákonné, ale existujú určité pravidlá a osvedčené postupy, ktoré by ste mali dodržiavať. Po prvé, mali by ste sa vyhnúť zoškrabávaniu webovej stránky, ak je na nej výslovne uvedené, že si to neželá. Môžete to zistiť vyhľadaním a /robots.txt súbor na cieľovej stránke.
Väčšina webových stránok umožňuje prehľadávanie webu, pretože chcú, aby vyhľadávače indexovali ich obsah. Takéto webové stránky môžete zoškrabať, pretože ich obrázky sú verejne dostupné.
To, že si môžete stiahnuť obrázok, však neznamená, že ho môžete použiť, ako keby bol váš vlastný. Väčšina webových stránok licencuje svoje obrázky, aby vám zabránili v ich opätovnom zverejnení alebo v ich opätovnom použití iným spôsobom. Vždy predpokladajte, že obrázky nemôžete opätovne použiť, pokiaľ neexistuje špecifická výnimka.
Nastavenie balíka Python
Pred začatím budete musieť nainštalovať niekoľko balíkov. Ak v počítači nemáte nainštalovaný Python, navštívte oficiálneho python.org webovú stránku na stiahnutie a inštaláciu najnovšej verzie.
Potom otvorte svoj terminál do priečinka projektu a aktivovať virtuálne prostredie Pythonu izolovať svoje závislosti.
Nakoniec nainštalujte žiadosti a Krásna Polievka balíky používajúce pip:
požiadavky na inštaláciu pip bs4
Zoškrabovanie obrázkov pomocou Pythonu
V tomto návode na zoškrabovanie obrázkov použijete žiadosti knižnica na načítanie webovej stránky obsahujúcej cieľové obrázky. Potom odošlete odpoveď z tejto webovej stránky do Krásna Polievka na získanie všetkých adries odkazov na obrázky img značky. Potom zapíšete každý súbor obrázka do priečinka na stiahnutie obrázkov.
Ako získať adresy URL obrázkov pomocou Python's BeautifulSoup
Teraz pokračujte a vytvorte súbor Python v koreňovom priečinku projektu. Uistite sa, že ste pripojili .py príponu názvu súboru.
Každý úryvok kódu v tomto návode pokračuje z predchádzajúceho.
Otvorte súbor Python pomocou akýkoľvek dobrý editor kódu a na vyžiadanie webovej stránky použite nasledujúci kód:
importovať žiadosti
URL = "imagesiteURL" # Nahraďte to adresou URL webovej stránky
getURL = requests.get (URL, headers={"User-Agent":"Mozilla/5.0"})
vytlačiť (getURL.status_code)
Ak vyššie uvedený program odošle kód odpovede 200, požiadavka bola úspešná. V opačnom prípade sa možno budete chcieť uistiť, že vaše sieťové pripojenie je stabilné. Tiež sa uistite, že ste zadali platnú adresu URL.
Teraz použite Krásna Polievka čítať obsah webovej stránky pomocou html_parser:
od bs4 importovať Krásna Polievka
soup = BeautifulSoup (getURL.text, 'html.parser')
images = soup.find_all('img')
vytlačiť (obrázky)
Tento kód vytvorí zoznam objektov, z ktorých každý predstavuje obrázok z webovej stránky. Čo však z týchto údajov potrebujete, je text každého obrázka src atribút.
Extrahovať zdroj z každého img značka:
zdroje obrázkov = []
pre obrázok v snímky:
imageSources.append (image.get('src'))
vytlačiť (imageSources)
Znova spustite kód a adresy obrázkov by sa teraz mali objaviť v novom zozname (imageSources). Úspešne ste extrahovali každý zdroj obrázkov z cieľovej webovej stránky.
Ako uložiť obrázky pomocou Pythonu
Najprv vytvorte cieľový priečinok sťahovania v koreňovom adresári projektu a pomenujte ho snímky.
Aby Python úspešne stiahol obrázky, ich cesty musia byť úplné absolútne adresy URL. Inými slovami, musia obsahovať „ http://" alebo " https://" predponu a celú doménu webovej lokality. Ak webová stránka odkazuje na svoje obrázky pomocou relatívnych adries URL, budete ich musieť previesť na absolútne adresy URL.
V jednoduchom prípade, keď je adresa URL absolútna, spustenie sťahovania je len prípad vyžiadania každého obrázka zo skôr extrahovaných zdrojov:
pre obrázok v Zdroje obrázkov:
webs = requests.get (obrázok)
open('images/' + image.split('/')[-1], 'wb').write (webs.content)
The image.split('/')[-1] kľúčové slovo rozdeľuje odkaz na obrázok pri každej lomke (/). Potom získa názov súboru obrázka (vrátane akejkoľvek prípony) z posledného prvku.
Majte na pamäti, že v zriedkavých prípadoch sa môžu názvy súborov s obrázkami zhodovať, čo môže viesť k prepísaniu sťahovaných súborov. Neváhajte a preskúmajte riešenia tohto problému ako rozšírenie tohto príkladu.
Absolútne adresy URL môžu byť dosť komplikované s množstvom okrajových prípadov, ktoré je potrebné pokryť. Našťastie existuje užitočná metóda v žiadosti.kompat balík tzv urljoin. Táto metóda vráti úplnú adresu URL so základnou adresou URL a adresou URL, ktorá môže byť relatívna. Umožňuje vám vyriešiť hodnoty, ktoré nájdete href a src atribúty.
Konečný kód vyzerá takto:
od bs4 importovať Krásna Polievka
URL = "imagesiteURL" # Nahraďte to adresou URL webovej stránky
getURL = requests.get (URL, headers={"User-Agent":"Mozilla/5.0"})
soup = BeautifulSoup (getURL.text, 'html.parser')images = soup.find_all('img')
resolvedURLs = []pre obrázok v snímky:
src = image.get('src')
resolvedURLs.append (requests.compat.urljoin (URL, src))
pre obrázok v resolvedURLs:
webs = requests.get (obrázok)
open('images/' + image.split('/')[-1], 'wb').write (webs.content)
Nikdy neskrátite obrazové údaje
Mnoho projektov na rozpoznávanie obrázkov narazilo na tehlovú stenu kvôli nedostatočnému množstvu obrázkov na trénovanie modelu. Vždy však môžete zoškrabať obrázky z webových stránok, aby ste zvýšili svoje úložisko údajov. A našťastie, Python je výkonný nástroj na škrabanie obrázkov, ktorý môžete používať nepretržite bez strachu z ceny.
Ak máte záujem o načítanie iných typov údajov z webu, možno budete chcieť zistiť, ako používať Python na všeobecné zoškrabovanie webu.