Python Web Crawling _ 이미지 저장하기 [1]

bi_sz·2022년 4월 3일
0

Python

목록 보기
13/15
post-thumbnail

지난게시글에 이어 이번에는 selenium 으로 이미지를 크롤링하여 내 폴더에 저장해보려고 합니다.



imgdata.py 파일을 만들어 타켓 URL을 설정해줍니다.

구글 이미지의 속성 값을 보면 class값이 공통적으로 rg_i.Q4LuWd 입니다.

imgs = driver.find_elements_by_css_selector('img.rg_i.Q4LuWd')
css selector를 이용해서 'tag이름.class명'의 순으로 인자를 전달해 줍니다.

위 코드를 실행하면


정체모를 출력값들,,,

그리고 None이 출력되며 마무리됩니다.

이미지들의 src가 프린트 되어야 하는데 너무 많아서 이런식으로 출력이 되지 않았을까 하는 생각입니다.

None 위에 보이는 가장 마지막 링크를 그대로 검색 해보겠습니다.

무사히 이미지들의 scr가 출력된 것을 볼 수 있습니다.

결과값에 조금 놀랐지만 결과는 무사히 나왔네요 !


이제 크롤링한 이미지들을 다운로드 해보겠습니다.

우선 이미지를 저장할 폴더를 생성하고, 다운로드 시 확장자명과 파일명을 설정한 후 폴더에 이미지를 다운로드 해야 합니다.

폴더를 생성하기 위해 import os 를 해주고,
이미지를 다운로드 하기 위해from urllib.request import urlretrieve 해줍니다.

위와 같이 이미지를 저장할 폴더를 지정해주고, 폴더가 없으면 새로 생성하는 코드를 작성해줍니다.

기존 코드에서 result = [] 코드를 추가하여 attribute 중 src만 담을 리스트를 생성해줍니다.

확장자명인 .jpg를 뽑아내기 위해 .부터 ?까지 잘라내 줍니다.
자른 textfiletype에 넣어준 후 urlretrieve를 이용해 이미지를 다운받아 줍니다.
파일명은 index+filetype으로 저장하여 1.png, 2.png... 으로 저장되게 합니다.


imgdata.py 코드를 실행해 보니 위와 같은 에러가 발생했다.

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape 에러의 경우 파이썬에서 파일을 불러오거나 할때 나타나는 에러라고 한다.

\대신 \\로 바꾸어주니 해결됐다.


다시 코드를 실행해 보니 src가 터미널 창에 출력되고 위 내용이 보였다.

img폴더에도 19개의 이미지가 생겼다.

확장자명이 .png로 저장되지는 않은 모양이다.

수동으로 0번만 .png를 붙여 확장자를 변경해 주었다.

귀여운 이미지가 저장되었다.


오류 내용와 결과로 보았을 때 출력되는 scr 중에서 filetype을 뽑아낼 수 없는게 문제가 되어,
다른 링크의 이미지로 다시 해 보도록 하겠습니다.

.jpg로 끝나는 scr이 출력되었습니다.

.으로 시작하는 부분부터 잘라서 filetype 으로 들어가게 코드를 수정해 줍니다.

코드를 실행했을 때 무사히 JPG파일이 저장되었고,

귀여운 이미지가 저장된 것을 확인할 수 있습니다.

0개의 댓글