-
구글 이미지 크롤링 하기programming 공부/Python 2021. 1. 12. 01:23
조코딩님의 유튜브에서는 처음에 구글 이미지 다운로드 라이브러리를 활용하는 방법을 소개하셨던데 해당 라이브러리는 구글이 검색 방식을 바꾸면서 무용지물이 되었다고 한다.
그래서 후속편으로 Selenium을 활용하는 방법을 소개하고있었다.
처음 파이썬을 배울때 셀레니움을 많이 썼었는데 셀레니움의 극악의 속도에 질려서 최근에는 거의 대부분의 작업을 requests 로 하다보니 셀레니움으로 하기가 너무 귀찮았다.
어차피 구글에서 API로 제공하지 않을까?
포털사이트들이 대부분 API를 일정량은 공짜로 제공을 하고 초과 사용분에 대해서 과금을 하는 시스템이기 때문에(야매 크롤링도 같은 이유로 막았을것이라고 생각함)
API를 활용하면 될것 같아서 찾아보았다.
역시나
byeonghun-lee.github.io/2017/06/29/googleCustomSearch/
Google Custom Search API에서 자료(이미지) 가져오기
프로젝트를 진행하면서 사진을 외부에서 가져오고 싶은데 막히는 부분이 많았다.인스타그램은 정책변경으로 자신의 사진 일부만을 가져올 수 있고 이미지 검색으로 가져오려면 따로 인증이 필
byeonghun-lee.github.io
custom Search API를 설정하면 내가 원하는 것을 이룰 수 있을 것 같았다.
https://www.googleapis.com/customsearch/v1
위 사이트에서 나와있는대로 키를 발급받고 위 주소로 get 방식으로 요청하면 된다.m.blog.naver.com/sylviuss/221298019474
구글 이미지 검색 - Custom search API 활용(Json)
구글 이미지 검색이 가능한 API로 Custom search API를 활용할 수 있다. Custom search API에 ...
blog.naver.com
위 주소를 참고하여 아래와같이 세팅하고
더보기import requests as r
apikey = "your api key"
engineid = "your engineid"
query = "제니"
url = "https://www.googleapis.com/customsearch/v1"
param = {"key":apikey,
"cx":engineid,
"fileType":"jpg",
"imgType" : "face",
"q" : query,
"searchType" : "image",
"num" : 10,
"start"1
}
s = r.Session()
test = s.get(url,params=param)
print(test.json())
이렇게 요청하면
짜잔!
각 이미지의 주소를 받아올 수 있게 된다.
Teachable machine에 사용할 이미지를 가져오는게 목적이라 imgType에 face를 넣어줬다.
그다음 간단히 다운로드 받기 위해서 아래처럼해본다
더보기import requests as r
import urllib.request as ur
s = r.Session()
test = s.get(url,params=param).json()
for i in range(0,len(test.get('items'))):
print(test.get('items')[i].get('title'))
print(test.get('items')[i].get('link'))
ur.urlretrieve(test.get('items')[i].get('link'),str(i)+".jpg")
그러면 이미지가 이렇게 잘 받아진다.
참고로 JSON API는 검색어당 검색결과를 최대 100개 까지만 뱉어준다고 한다.
그 이상부터는 검색어를 바꿔가면서 해야한다.
그리고 하루에 검색을 100번까지만 무료로 제공한다.
즉 이미지를 하루에 최대로 받아봤자 10000개 까지만 받을 수 있다는 뜻이다.
'programming 공부 > Python' 카테고리의 다른 글
[python] 현재 사용자 이름 가져오기 (0) 2021.05.13 [python] class instance의 변수로 정렬하기 (0) 2021.05.02 파이썬으로 이차원 배열 정렬하기 (0) 2021.04.24 Codility 배열문제 2번 (0) 2021.03.01 1. Hello World (0) 2021.01.10