Python으로 Google 이미지 스크랩 및 다운로드

게시 됨: 2023-01-02

웹 스크래핑의 확산이 증가함에 따라 사용 영역이 상당히 증가했습니다. 오늘날 많은 AI 애플리케이션은 웹 스크래핑 데이터 세트에 최신 데이터를 정기적으로 제공합니다. 대상 웹 사이트에서 인공 지능 응용 프로그램의 데이터 세트로 정기적이고 중단 없는 데이터 흐름이 있습니다.

관련 게시물: 고객 성공의 미래에 대한 인공 지능의 영향

이미지 처리는 인공 지능 응용 분야에서 가장 인기 있는 분야 중 하나입니다. 이미지 처리는 컴퓨터가 이미지와 비디오에서 사물과 사람을 식별하고 이해할 수 있도록 하는 데 중점을 둔 컴퓨터 과학 분야입니다. 다른 유형의 인공 지능과 마찬가지로 이미지 처리는 인간의 능력을 복제하는 작업을 수행하고 자동화하는 것을 목표로 합니다. 이 경우 이미지 처리는 사람들이 보는 방식과 보는 것을 이해하는 방식을 모두 복사하려고 합니다.

많은 분야, 특히 영상처리 프로젝트에서 알고리즘 개발과 오차범위 감소에 필요한 데이터는 웹 스크래핑을 통해 얻는다. 이 기사에서는 이미지 처리 프로젝트에서 자주 사용되는 응용 프로그램을 개발합니다. Python 프로그래밍 언어로 Google 이미지를 스크랩하고 다운로드합니다. 시작하겠습니다.

프로젝트 설정

먼저 바탕 화면에서 폴더를 엽니다. 이 파일 경로에서 터미널을 열고 아래 명령어를 실행하여 필요한 라이브러리를 설치해 보자.

pip 설치 요청 bs4

필요한 라이브러리를 설치한 후 폴더에 'index.py'라는 파일을 생성해 봅시다.

암호

생성한 'index.py' 파일에 다음 코드를 붙여넣어 봅시다.

가져오기 요청, re, json, urllib.request
bs4 import BeautifulSoupheaders에서 = {
"User-Agent": "Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36(Gecko와 같은 KHTML) 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"
targetted_image_base_html_path = ".VFACy.kGQAp.sMi44c.lNHeqe.WGvvNb"

html = requests.get(“https://www.google.com/search”, params=queryParameters, headers=headers, timeout=30)
수프 = BeautifulSoup(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)

removed_matched_thumbnails = remove_matched_get_thumbnails(matched_google_image_data=matched_image_data)

Matched_resolution_images = re.findall(r”(?:'|,),\[\”(https:|http.*?)\”,\d+,\d+\]”, removed_matched_thumbnails)

full_resolution_images = get_resolution_image(일치된_해상도_이미지=일치된_해상도_이미지)

색인의 경우 enumerate(zip(soup.select(target_image_path), full_resolution_images), start=1)의 (image_data, image_link):

append_image_to_list(이미지_데이터=이미지_데이터, 이미지_링크=이미지_링크)

print(f'{index}.이미지 다운로드 시작')

download_image(이미지_링크=이미지_링크, 색인=색인)

print(f'{index}. 이미지 다운로드 성공')

print(f'스크랩 및 다운로드한 이미지: {google_images}')

def remove_matched_get_thumbnails(matched_google_image_data):
반환 re.sub(
r'\[\”(https\:\/\/encrypted-tbn0\.gstatic\.com\/images\?.*?)\”,\d+,\d+\]', “”, str(matched_google_image_data ))

def get_resolution_image(일치된_해상도_이미지):
반품 [
bytes(bytes(img, "ascii").decode("unicode-escape"), "ascii").decode("unicode-escape") for img in matching_resolution_images
]

def convert_image_to_json():
all_script_tags = soup.select("스크립트")
images_data = "".join(re.findall(r"AF_initDataCallback\(([^<]+)\);", ​​str(all_script_tags)))
fixed_images_data = json.dumps(이미지_데이터)
json.loads(fixed_images_data) 반환

def append_image_to_list(이미지_데이터, 이미지_링크):
google_images.append({
"이미지_제목": image_data.select_one(targetted_image_base_html_path)["제목"],
"이미지_소스_링크": image_data.select_one(targetted_image_base_html_path)["href"],
"이미지_링크": 이미지_링크
})

def download_image(이미지_링크, 색인):
opener=urllib.request.build_opener()
opener.addheaders=[('사용자 에이전트','Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36(Gecko와 같은 KHTML) Chrome/101.0.4951.54 Safari/537.36')]
urllib.request.install_opener(열기)
urllib.request.urlretrieve(image_link, f'Scraped_Images/Image_{index}.jpg')

scrape_and_download_google_images()

코드를 검토하는 경우 먼저 정적 값이 있는 필드를 살펴보겠습니다. 다음 필드는 정적 값으로 정의됩니다. queryParams 변수를 사용하여 스크랩하고 다운로드하려는 이미지의 이름과 속성을 지정합니다.

또한 읽기: ChatGPT – 비즈니스에 미치는 영향

헤더 = {
"User-Agent": "Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36(Gecko와 같은 KHTML) 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 = requests.get(“https://www.google.com/search”, params=queryParameters, headers=headers, timeout=30)
수프 = BeautifulSoup(html.text, "lxml")

google_images = []

scrape_and_download_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)

removed_matched_thumbnails = remove_matched_get_thumbnails(matched_google_image_data=matched_image_data)

Matched_resolution_images = re.findall(r”(?:'|,),\[\”(https:|http.*?)\”,\d+,\d+\]”, removed_matched_thumbnails)

full_resolution_images = get_resolution_image(일치된_해상도_이미지=일치된_해상도_이미지)

색인의 경우 enumerate(zip(soup.select(target_image_path), full_resolution_images), start=1)의 (image_data, image_link):

append_image_to_list(이미지_데이터=이미지_데이터, 이미지_링크=이미지_링크)

print(f'{index}.이미지 다운로드 시작')

download_image(이미지_링크=이미지_링크, 색인=색인)

print(f'{index}. 이미지 다운로드 성공')

print(f'스크랩 및 다운로드한 이미지: {google_images}')

스크랩한 이미지를 폴더로 다운로드하는 것은 download_image(image_link=image_link, index=index) 메서드에서 이루어집니다. 이 방법으로 스크랩한 이미지는 이전에 프로젝트의 파일 위치에 추가한 “Scraped_Images”에 저장됩니다.

참고: 애플리케이션을 실행하기 전에 프로젝트 구조에 "Scraped_Images" 폴더를 생성합니다.

def download_image(이미지_링크, 색인):
opener=urllib.request.build_opener()
opener.addheaders=[('사용자 에이전트','Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36(Gecko와 같은 KHTML) Chrome/101.0.4951.54 Safari/537.36')]
urllib.request.install_opener(열기)
urllib.request.urlretrieve(image_link, f'Scraped_Images/Image_{index}.jpg')

또한 읽기: 비즈니스를 위한 Blockchain-as-a-Service의 응용 프로그램 및 이점은 무엇입니까?

달리다

응용 프로그램을 실행하려면 파일 위치에서 터미널을 열고 다음 명령을 실행하십시오.

파이썬 index.py

애플리케이션이 실행된 후 애플리케이션의 콘솔에 다음 정보가 인쇄됩니다.

1. 이미지 다운로드 시작
1. 이미지 다운로드 성공
2. 이미지 다운로드 시작
2. 이미지 다운로드 성공
3. 이미지 다운로드 시작
3. 성공적으로 이미지 다운로드
4. 이미지 다운로드 시작
4. 성공적으로 이미지 다운로드
5. 이미지 다운로드 시작
5. 성공적으로 이미지 다운로드
6. 이미지 다운로드 시작
6. 성공적으로 이미지 다운로드
7. 이미지 다운로드 시작
7. 성공적으로 이미지 다운로드
[...]
48. 이미지 다운로드 시작
48. 성공적으로 다운로드된 이미지 스크랩 및 다운로드된 이미지:
[
{
'image_title': '마블 코믹스 – 위키백과',
'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': '마블 유니버스 – 위키백과',
'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 | 마블 영화, 캐릭터, 만화, TV 공식 사이트',
'image_source_link': 'https://www.marvel.com/',
'image_link': 'https://i.annihil.us/u/prod/marvel/images/OpenGraph-TW-1200×630.jpg'
},
{
'image_title': '마블 엔터테인먼트 - YouTube',
'image_source_link': 'https://www.youtube.com/c/marvel',
'이미지_링크': 'https://yt3.ggpht.com/fGvQjp1vAT1R4bAKTFLaSbdsfdYFDwAzVjeRVQeikH22bvHWsGULZdwIkpZXktcXZc5gFJuA3w=s900-ck-c0x00ffffff-no-rj'
},
{
'image_title': '마블 영화 및 쇼 | 디즈니+',
'image_source_link': 'https://www.disneyplus.com/brand/marvel',
'이미지_링크': 'https://prod-ripcut-delivery.disney-plus.net/v1/variant/disney/DA2E198288BFCA56AB53340211B38DE7134E40E4521EDCAFE6FFB8CD69250DE9/scale?width=2880&aspectRatio=1.78&format=jpeg'
},
{
'image_title': '뉴비를 위한 Marvel 소개 | 열광한',
'image_source_link': 'https://www.wired.com/2012/03/an-intro-to-marvel-for-newbies/',
'이미지_링크': 'https://media.wired.com/photos/5955ceabcbd9b77a41915cf6/master/pass/marvel-characters.jpg'
},
{
'image_title': '이야기 순서대로 모든 Marvel 영화를 보는 방법 - 퍼레이드: 엔터테인먼트, 요리법, 건강, 생활, 휴일',
'image_source_link': 'https://parade.com/1009863/alexandra-hurtado/marvel-movies-order/',
'이미지_링크': 'https://parade.com/.image/t_share/MTkwNTgxMjkxNjk3NDQ4ODI4/marveldisney.jpg'
},
{
'image_title': '마블 코믹스 | 역사, 인물, 사실, 영화 | 브리태니커',
'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': '캡틴 마블(2019) – IMDb',
'image_source_link': 'https://www.imdb.com/title/tt4154664/',
'이미지_링크': 'https://m.media-amazon.com/images/M/MV5BMTE0YWFmOTMtYTU2ZS00ZTIxLWE3OTEtYTNiYzBkZjViZThiXkEyXkFqcGdeQXVyODMzMzQ4OTI@._V1_FMjpg_UX1000_.jpg'
},
[...]
]

다운로드 받은 이미지를 확인하기 위해 “Scraped_Images” 파일을 살펴보자.

Scraped Images

또한 읽어보십시오: 기업 유형 및 신생 기업을 통합하는 방법

결론

왠지 필요했던 구글 이미지의 스크래핑과 다운로드를 파이썬으로 했습니다. 코드를 작성하지 않고 Google에서 필요한 이미지를 얻으려면 Zenserp API를 탐색하십시오. 다음은 지속적으로 업데이트되는 강력하고 훌륭한 문서입니다.