이번에는 사용자가 함수에 매개변수로 주는 "검색 키워드"와 저장 이미지 숫자에 따라 이미지를 저장하는 웹크롤러 파이썬 프로그램을 만들고자 한다.
우선, 검색어에 따라 가져와야 하는 url의 값이 달라지기 때문에 url의 쿼리스트링을 분석해야 한다.
검색을 할때 변하는 변수를 참고하면 사용자가 입력하는 값에 따라 다른 이미지를 저장하는 프로그램을 만들 수 있다.
네이버에서 이미지로 검색을 하는 경우 주소창이 아래와 같이 변하게 된다.
https://search.naver.com/search.naver?where=image&sm=tab_jum&query=커피
주소창에 쓰여있는 정보 중 ?뒤에 붙은 것들은 쿼리스트링이라고 이야기 하며, 서버 쪽으로 정보를 전달 할 때 사용하게 된다. 검색어를 전달하면 해당 검색어에 맞는 정보로 웹 사이트가 이동하고 정보를 보여주게 된다.
커피라고 쓰여 있는 부분을 사용자 키워드 값으로 변경하는 파이썬 함수를 만들면 된다.
네이버 검색 이미지 저장 프로그램
- def는 파이썬에서 함수를 만드는 예약어
- 검색어(keyword)와 저장하고자 하는 이미지 숫자(10)를 매개변수로 하는 getImage 함수를 만든 것
- file = open("저장 파일명.확장자", "wb")
- open( ) 메소드는 파일을 처리 위한 메소드
- wb는 파일 모드를 지정하는 것.
- 이미지 파일을 저장하고자 하는 것이기 때문에 wb라고 써준 것
- file.write( img_con )
- 이미지 url로 가져온 content를 open한 file에 쓰라는 명령어
- file.close( )
- 열었던 파일을 닫아 주는 것
import re
import requests
from bs4 import BeautifulSoup
def getImage(keyword,no):
url="https://search.naver.com/search.naver?where=image&sm=tab_jum&query="+keyword
html = requests.get(url)
bs_html = BeautifulSoup(html.content,"html.parser")
photowall = bs_html.find('div',{"class":"photowall"})
img_list = photowall.find_all("img",{"class":"_img"})
# for i in range(len(img_list)):
for i in range(no):
img_link = re.findall('data-source="(.+?)"',str(img_list[i]))[0]
img_con = requests.get(img_link).content
file = open("search_img/"+keyword+str(i+1)+".jpg","wb")
file.write(img_con)
file.close()
print(img_link)
getImage('커피',10) #함수로 만든 getImage 실행 코드
(결과값)
위와 같이 프로그램을 만들고 웹페이지를 만들어서 붙이면 사용자가 입력하는 검색어와 저장을 원하는 이미지 숫자에 따라 이미지를 저장해 주는 프로그램을 개발할 수 있다.
허나, 이러한 웹 크롤러 프로그램의 경우 저작권 등 문제가 발생할 수 있기 때문에 상업적 이용에는 주의가 필요하다.
반응형
'Python > 파이썬 크롤링 예' 카테고리의 다른 글
파이썬 웹 크롤러 만들기 : 네이버 웹툰 전체 썸네일(이미지) 저장 (0) | 2019.05.09 |
---|---|
파이썬 웹 크롤러 만들기 : 기상청 RSS 도시 예보 (0) | 2019.05.09 |
파이썬 웹 크롤러 만들기 : 네이버 뉴스 가져오기 (0) | 2019.05.09 |
댓글