Скреперът за изображения на Python не е просто инструмент за изостряне на уменията ви за програмиране. Можете също да го използвате за създаване на изображения за проект за машинно обучение или генериране на миниатюри на сайта. Въпреки че може да има други начини за правене на подобни неща, нищо не може да победи контрола, който имате с помощта на инструменти, които създавате сами.

Научете как да изстъргвате изображения от всеки уебсайт с помощта на Python и библиотеката BeautifulSoup.

Законно ли е изстъргването на изображения?

като по-общо изстъргване в мрежата, изстъргването на изображения е метод за изтегляне на съдържание от уебсайт. Това не е незаконно, но има някои правила и най-добри практики, които трябва да следвате. Първо, трябва да избягвате изстъргването на уебсайт, ако в него изрично е посочено, че не иска да го правите. Можете да разберете това, като потърсите a /robots.txt файл на целевия сайт.

Повечето уебсайтове позволяват уеб обхождане, защото искат търсачките да индексират съдържанието им. Можете да изстържете такива уебсайтове, тъй като изображенията им са публично достъпни.

instagram viewer

Въпреки това, само защото можете да изтеглите изображение, това не означава, че можете да го използвате, сякаш е ваше собствено. Повечето уебсайтове лицензират своите изображения, за да ви попречат да ги публикувате повторно или да ги използвате повторно по други начини. Винаги приемайте, че не можете да използвате повторно изображения, освен ако няма специално изключение.

Настройка на пакета на Python

Ще трябва да инсталирате няколко пакета, преди да започнете. Ако нямате инсталиран Python на вашия компютър, посетете официалния python.org уебсайт, за да изтеглите и инсталирате най-новата версия.

След това отворете терминала си в папката на проекта и активирате виртуална среда на Python за да изолирате вашите зависимости.

Накрая инсталирайте искания и Красива супа пакети, използващи pip:

pip install bs4 заявки

Изстъргване на изображения с Python

За този урок за изстъргване на изображения ще използвате искания библиотека, за да извлечете уеб страница, съдържаща целевите изображения. След това ще предадете отговора от този уебсайт в Красива супа за да вземете всички адреси на връзки към изображения имг етикети. След това ще запишете всеки файл с изображение в папка, за да изтеглите изображенията.

Как да извлечете URL адреси на изображения с BeautifulSoup на Python

Сега продължете и създайте Python файл в основната папка на вашия проект. Уверете се, че сте добавили .py разширение към името на файла.

Всеки кодов фрагмент в този урок продължава от предишния.

Отворете файла на Python с всеки добър редактор на код и използвайте следния код, за да заявите уеб страница:

внос искания
URL = "URL на изображението" # Заменете това с URL адреса на уебсайта
getURL = requests.get (URL, заглавки={"User-Agent":"Mozilla/5.0"})
печат (getURL.status_code)

Ако горната програма изведе код за отговор 200, заявката е била успешна. В противен случай може да искате да се уверите, че вашата мрежова връзка е стабилна. Също така се уверете, че сте предоставили валиден URL адрес.

Сега използвайте Красива супа да прочетете съдържанието на уеб страницата с помощта на html_parser:

от bs4 внос Красива супа

супа = BeautifulSoup (getURL.text, 'html.parser')

изображения = soup.find_all('img')
печат (изображения)

Този код създава списък с обекти, всеки от които представлява изображение от уеб страницата. Въпреки това, това, което ви трябва от тези данни, е текстът на всяко изображение src атрибут.

За да извлечете източника от всеки имг етикет:

imageSources = []

за образ в изображения:
imageSources.append (image.get('src'))

печат (източници на изображения)

Изпълнете отново кода си и адресите на изображенията трябва да се появят в нов списък (Източници на изображения). Успешно сте извадили всеки източник на изображение от целевата уеб страница.

Как да запазите изображенията с Python

Първо, създайте дестинационна папка за изтегляне в основната директория на вашия проект и я наименувайте изображения.

За да може Python да изтегли успешно изображенията, техните пътища трябва да са пълни абсолютни URL адреси. С други думи, те трябва да включват " http://" или " https://" префикс, плюс пълния домейн на уебсайта. Ако уеб страницата препраща към своите изображения, използвайки относителни URL адреси, ще трябва да ги преобразувате в абсолютни URL адреси.

В лесния случай, когато URL адресът е абсолютен, инициирането на изтеглянето е просто случай на искане на всяко изображение от по-рано извлечените източници:

за образ в Източници на изображения:
webs = requests.get (изображение)
open('images/' + image.split('/')[-1], 'wb').write (webs.content)

В image.split('/')[-1] ключова дума разделя връзката към изображението при всяка наклонена черта (/). След това извлича името на файла с изображение (включително всяко разширение) от последния елемент.

Имайте предвид, че в редки случаи имената на файлове с изображения може да се сблъскат, което да доведе до презаписване на изтегляне. Чувствайте се свободни да проучите решенията на този проблем като разширение на този пример.

Абсолютните URL адреси могат да станат доста сложни, с много крайни случаи за покриване. За щастие има полезен метод в requests.compat пакет наречен urljoin. Този метод връща пълен URL, като се има предвид основен URL и URL, който може да е относителен. Позволява ви да разрешавате стойности, в които ще намерите href и src атрибути.

Крайният код изглежда така:

от bs4 внос Красива супа
URL = "URL на изображението" # Заменете това с URL адреса на уебсайта
getURL = requests.get (URL, заглавки={"User-Agent":"Mozilla/5.0"})
супа = BeautifulSoup (getURL.text, 'html.parser')

изображения = soup.find_all('img')
resolvedURLs = []

за образ в изображения:
src = image.get('src')
resolvedURLs.append (requests.compat.urljoin (URL, src))

за образ в разрешени URL адреси:
webs = requests.get (изображение)
open('images/' + image.split('/')[-1], 'wb').write (webs.content)

Никога не губете данни за изображения

Много проекти за разпознаване на изображения се удрят в тухлена стена поради недостатъчно количество изображения за обучение на модел. Но винаги можете да изстържете изображения от уебсайтове, за да подобрите хранилището си с данни. И за щастие, Python е мощен скрепер за изображения, който можете да използвате непрекъснато, без да се страхувате, че ще получите цена.

Ако се интересувате от извличане на други типове данни от мрежата, може да искате да разберете как да използвате Python за общо изстъргване в мрежата.