Zeskrob i pobierz obrazy Google za pomocą Pythona

Opublikowany: 2023-01-02

Rosnące rozpowszechnienie web scrapingu znacznie zwiększyło obszary jego wykorzystania. Obecnie wiele aplikacji AI regularnie zasila zbiory danych zbieranych w sieci aktualnymi danymi. Następuje regularny i nieprzerwany przepływ danych z docelowych serwisów do zbiorów danych aplikacji sztucznej inteligencji.

Powiązany wpis: Wpływ sztucznej inteligencji na przyszłość sukcesu klienta

Przetwarzanie obrazu to jeden z najpopularniejszych obszarów zastosowań sztucznej inteligencji. Przetwarzanie obrazu to dziedzina informatyki, która koncentruje się na umożliwianiu komputerom identyfikowania i rozumienia obiektów i osób na obrazach i filmach. Podobnie jak inne rodzaje sztucznej inteligencji, przetwarzanie obrazu ma na celu wykonywanie i automatyzację zadań, które odzwierciedlają ludzkie możliwości. W tym przypadku przetwarzanie obrazu próbuje skopiować zarówno sposób, w jaki ludzie widzą, jak i sposób, w jaki rozumieją to, co widzą.

Dane potrzebne do opracowania algorytmów i redukcji marginesów błędów w wielu dziedzinach, zwłaszcza w projektach przetwarzania obrazu, uzyskuje się metodą web scrapingu. W tym artykule opracujemy aplikację, która jest często używana w projektach przetwarzania obrazu. Zeskrobujemy i pobierzemy Obrazy Google za pomocą języka programowania Python. Więc zacznijmy.

Konfiguracja projektu

Najpierw otwórzmy folder na pulpicie. Otwórzmy terminal w tej ścieżce pliku i zainstalujmy niezbędne biblioteki, uruchamiając poniższe polecenie.

żądania instalacji pip bs4

Po zainstalowaniu niezbędnych bibliotek utwórzmy plik o nazwie „index.py” w folderze.

Kod

Wklejmy następujące kody do utworzonego przez nas pliku „index.py”.

żądania importu, re, json, urllib.request
z bs4 importuj BeautifulSoupheaders = {
„User-Agent”: „Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, jak Gecko) Chrome/103.0.5060.114 Safari/537.36”
}queryParameters = {„q”: „cud”, „tbm”: „isch”, „hl”: „en”, „gl”: „us”, „ijn”: „0” }

target_image_path = „.isv-r.PNCib.MSM1fd.BUooTd”
targetted_image_base_html_path = „.VFACy.kGQAp.sMi44c.lNHeqe.WGvvNb”

html = request.get("https://www.google.com/search", params=queryParameters, headers=headers, timeout=30)
zupa = PięknaZupa(html.text, „lxml”)

google_images = []

def scrape_and_download_google_images():

images_data_in_json = Convert_image_to_json()

matched_image_data = re.findall(r'\”b-GRID_STATE0\”(.*)sideChannel:\s?{}}', images_data_in_json)

usunięte_matched_thumbnails = remove_matched_get_thumbnails(matched_google_image_data=dopasowane_dane_obrazu)

dopasowane_obrazy_rozdzielczosci = re.findall(r”(?:'|,),\[\”(https:|http.*?)\”,\d+,\d+\]”, usunięto_dopasowane_miniatury)

obrazy w pełnej_rozdzielczości = pobierz_obraz w rozdzielczości (dopasowana_rozdzielczość_obrazów = dopasowane_obrazy w rozdzielczości)

dla indeksu, (image_data, image_link) w enumerate(zip(soup.select(target_image_path), full_resolution_images), start=1):

append_image_to_list(image_data=image_data, image_link=image_link)

print(f'{index}. obraz zaczął się pobierać')

download_image(image_link=image_link, index=index)

print(f'{index}. pomyślnie pobrano obraz')

print(zeskrobane i pobrane obrazy: {google_images}')

zdecydowanie usuń_matched_get_thumbnails(matched_google_image_data):
powrót ponownie sub(
r'\[\”(https\:\/\/encrypted-tbn0\.gstatic\.com\/images\?.*?)\”,\d+,\d+\]', „”, str(matched_google_image_data ))

def get_resolution_image(matched_resolution_images):
powrót [
bytes(bytes(img, „ascii”).decode(„unicode-escape”), „ascii”).decode(„unicode-escape”) dla img w dopasowanych_rozdzielczości_obrazach
]

def convert_image_to_json():
all_script_tags = soup.select("skrypt")
images_data = „”.join(re.findall(r”AF_initDataCallback\(([^<]+)\);”, str(all_script_tags)))
fixed_images_data = json.dumps(images_data)
zwróć json.loads(fixed_images_data)

def append_image_to_list(image_data, image_link):
google_images.append({
„tytuł_obrazu”: image_data.select_one(targetted_image_base_html_path)[„tytuł”],
„image_source_link”: image_data.select_one(targetted_image_base_html_path)[„href”],
„link_zdjęcia”: link_obrazu
})

def download_image(image_link, index):
otwieracz=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, jak Gecko) Chrome/101.0.4951.54 Safari/537.36′)]
urllib.request.install_opener(otwieracz)
urllib.request.urlretrieve(image_link, f'Scraped_Images/Image_{index}.jpg')

scrape_and_download_google_images()

Jeśli badamy kody, najpierw spójrzmy na pola z wartościami statycznymi. Następujące pola są zdefiniowane jako wartości statyczne. Nazwę i właściwości obrazu, który chcemy zeskrobać i pobrać, określamy za pomocą zmiennej queryParams.

Przeczytaj także: ChatGPT – jego implikacje dla firm

nagłówki = {
„User-Agent”: „Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, jak Gecko) Chrome/103.0.5060.114 Safari/537.36”
}queryParameters = {„q”: „marvel”, „tbm”: „isch”, „hl”: „en”, „gl”: „us”, „ijn”: „0” }target_image_path = „.isv- r.PNCib.MSM1fd.BUooTd”
target_image_base_html_path = „.VFACy.kGQAp.sMi44c.lNHeqe.WGvvNb”

html = request.get("https://www.google.com/search", params=queryParameters, headers=headers, timeout=30)
zupa = PięknaZupa(html.text, „lxml”)

google_images = []

Metoda scrape_and_download_google_images() to miejsce, w którym rozpoczyna się strumień. wybrane obrazy są zeskrobywane, a następnie pobierane do określonego przez nas folderu.

def scrape_and_download_google_images():

images_data_in_json = Convert_image_to_json()

matched_image_data = re.findall(r'\”b-GRID_STATE0\”(.*)sideChannel:\s?{}}', images_data_in_json)

usunięte_matched_thumbnails = remove_matched_get_thumbnails(matched_google_image_data=dopasowane_dane_obrazu)

dopasowane_obrazy_rozdzielczosci = re.findall(r”(?:'|,),\[\”(https:|http.*?)\”,\d+,\d+\]”, usunięto_dopasowane_miniatury)

obrazy w pełnej_rozdzielczości = pobierz_obraz w rozdzielczości (dopasowana_rozdzielczość_obrazów = dopasowane_obrazy w rozdzielczości)

dla indeksu, (image_data, image_link) w enumerate(zip(soup.select(target_image_path), full_resolution_images), start=1):

append_image_to_list(image_data=image_data, image_link=image_link)

print(f'{index}. obraz zaczął się pobierać')

download_image(image_link=image_link, index=index)

print(f'{index}. pomyślnie pobrano obraz')

print(zeskrobane i pobrane obrazy: {google_images}')

Pobranie zeskrobanego obrazu do folderu odbywa się w metodzie download_image(image_link=image_link, index=index). Obraz zeskrobany tą metodą jest zapisywany w „Scraped_Images”, który wcześniej dodaliśmy do lokalizacji pliku projektu.

Uwaga: Przed uruchomieniem aplikacji utwórz folder „Scraped_Images” w strukturze projektu

def download_image(image_link, index):
otwieracz=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, jak Gecko) Chrome/101.0.4951.54 Safari/537.36′)]
urllib.request.install_opener(otwieracz)
urllib.request.urlretrieve(image_link, f'Scraped_Images/Image_{index}.jpg')

Przeczytaj także: Jakie są zastosowania i zalety Blockchain-as-a-service dla firm?

Uruchomić

Aby uruchomić aplikację, otwórzmy terminal w lokalizacji pliku i uruchom następujące polecenie.

python index.py

Po uruchomieniu aplikacji na konsoli aplikacji drukowane są następujące informacje.

1. obraz zaczął się pobierać
1. pomyślnie pobrano obraz
2. obraz zaczął się pobierać
2. pomyślnie pobrano obraz
3. obraz zaczął się pobierać
3. pomyślnie pobrano obraz
4. obraz zaczął się pobierać
4. pomyślnie pobrano obraz
5. obraz zaczął się pobierać
5. pomyślnie pobrano obraz
6. obraz zaczął się pobierać
6. pomyślnie pobrano obraz
7. obraz zaczął się pobierać
7. pomyślnie pobrano obraz
[…]
48. obraz zaczął się pobierać
48. pomyślnie pobrano obraz zeskrobany i pobrany obraz:
[
{
„image_title”: „Komiksy Marvela – Wikipedia”,
„image_source_link”: „https://en.wikipedia.org/wiki/Marvel_Comics”,
„image_link”: „https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Marvel_Logo.svg/1200px-Marvel_Logo.svg.png”
},
{
„image_title”: „Wszechświat Marvela – Wikipedia”,
„image_source_link”: „https://en.wikipedia.org/wiki/Marvel_Universe”,
„image_link”: „https://upload.wikimedia.org/wikipedia/en/1/19/Marvel_Universe_%28Civil_War%29.jpg”
},
{
„image_title”: „Marvel.com | Oficjalna witryna filmów Marvela, postaci, komiksów, programów telewizyjnych,
„image_source_link”: „https://www.marvel.com/”,
„image_link”: „https://i.annihil.us/u/prod/marvel/images/OpenGraph-TW-1200×630.jpg”
},
{
„image_title”: „Marvel Entertainment – ​​YouTube”,
„image_source_link”: „https://www.youtube.com/c/marvel”,
„image_link”: „https://yt3.ggpht.com/fGvQjp1vAT1R4bAKTFlaSbdsfdYFDwAzVjeRVQeikH22bvHWsGULZdwIkpZXktcXZc5gFJuA3w=s900-ck-c0x00ffffff-no-rj”
},
{
„image_title”: „Filmy i programy Marvela | Disney+”,
„image_source_link”: „https://www.disneyplus.com/brand/marvel”,
„image_link”: „https://prod-ripcut-delivery.disney-plus.net/v1/variant/disney/DA2E198288BFCA56AB53340211B38DE7134E40E4521EDCAFE6FFB8CD69250DE9/scale?width=2880&aspectRatio=1.78&format=jpeg”
},
{
„image_title”: „Wprowadzenie do Marvela dla początkujących | PRZEWODOWY”,
'image_source_link': 'https://www.wired.com/2012/03/an-intro-to-marvel-for-newbies/',
„image_link”: „https://media.wired.com/photos/5955ceabcbd9b77a41915cf6/master/pass/marvel-characters.jpg”
},
{
„image_title”: „Jak oglądać każdy film Marvela w kolejności fabularnej – Parada: rozrywka, przepisy, zdrowie, życie, wakacje”,
'image_source_link': 'https://parade.com/1009863/alexandra-hurtado/marvel-movies-order/',
„image_link”: „https://parade.com/.image/t_share/MTkwNTgxMjkxNjk3NDQ4ODI4/marveldisney.jpg”
},
{
„image_title”: „Komiksy Marvela | Historia, postacie, fakty i filmy | Britannica”,
„image_source_link”: „https://www.britannica.com/topic/Marvel-Comics”,
„image_link”: „https://cdn.britannica.com/62/182362-050-BD31B42D/Scarlett-Johansson-Black-Widow-Chris-Hemsworth-Thor.jpg”
},
{
„image_title”: „Kapitan Marvel (2019) – IMDb”,
'image_source_link': 'https://www.imdb.com/title/tt4154664/',
„image_link”: „https://m.media-amazon.com/images/M/MV5BMTE0YWFmOTMtYTU2ZS00ZTIxLWE3OTEtYTNiYzBkZjViZThiXkEyXkFqcGdeQXVyODMzMzQ4OTI@._V1_FMjpg_UX1000_.jpg”
},
[…]
]

Spójrzmy na plik „Scraped_Images”, aby sprawdzić pobrane obrazy.

Scraped Images

Przeczytaj także: Rodzaje korporacji i jak włączyć swój start-up

Wniosek

Zrobiliśmy skrobanie i pobieranie obrazów Google, które z jakiegoś powodu były potrzebne, za pomocą Pythona. Jeśli chcesz uzyskać potrzebne obrazy od Google bez pisania kodu, zapoznaj się z interfejsem API Zenserp. Oto jego potężna i wspaniała dokumentacja, która jest stale aktualizowana.