-
구글 이미지 크롤링 하기programming 공부/Python 2021. 1. 12. 01:23
조코딩님의 유튜브에서는 처음에 구글 이미지 다운로드 라이브러리를 활용하는 방법을 소개하셨던데 해당 라이브러리는 구글이 검색 방식을 바꾸면서 무용지물이 되었다고 한다.
그래서 후속편으로 Selenium을 활용하는 방법을 소개하고있었다.
처음 파이썬을 배울때 셀레니움을 많이 썼었는데 셀레니움의 극악의 속도에 질려서 최근에는 거의 대부분의 작업을 requests 로 하다보니 셀레니움으로 하기가 너무 귀찮았다.
어차피 구글에서 API로 제공하지 않을까?
포털사이트들이 대부분 API를 일정량은 공짜로 제공을 하고 초과 사용분에 대해서 과금을 하는 시스템이기 때문에(야매 크롤링도 같은 이유로 막았을것이라고 생각함)
API를 활용하면 될것 같아서 찾아보았다.
역시나
byeonghun-lee.github.io/2017/06/29/googleCustomSearch/
custom Search API를 설정하면 내가 원하는 것을 이룰 수 있을 것 같았다.
https://www.googleapis.com/customsearch/v1
위 사이트에서 나와있는대로 키를 발급받고 위 주소로 get 방식으로 요청하면 된다.m.blog.naver.com/sylviuss/221298019474
위 주소를 참고하여 아래와같이 세팅하고
더보기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