2019. 10. 1. 19:57ㆍ해봤던것들
게시물 ID 가져오기
저번에 만들었던 인스타그램 아이디, 해시태그를 수집하는 크롤러를 만들고 나서
코드를 조금만 수정하면 인스타그램 이미지 다운로더도 만들 수 있겠다는 생각에 만들어봤습니다.
기본적으로 게시물 각각의 ID를 수집하는건 저번에 설명드린 것과 같습니다.
아래 글을 참고해주세요.
yeowool0217.tistory.com
크롬 웹 드라이버 버전 확인은 필수입니다.
이미지 URL 가져오기
1. 게시물 ID 가져오기
2. 이미지 URL 가져오기
3. 이미지 다운로드
각각의 py 파일을 만들고 게시물 ID 가져오기, 이미지 URL 가져오기는 따로 함수로 만들었기 때문에
가져온 각 게시물의 ID리스트를 받아와 이미지 URL을 가져오는 데 사용합니다.
import insta_url
def get_img_url():
temp = []
myurl = insta_url.my_url_list()
driver = webdriver.Chrome('chromedriver.exe')
for i in myurl:
url = 'https://www.instagram.com/'+str(i)
driver.get(url)
while(1):
sleep(1)
pageString = driver.page_source
soup = BeautifulSoup(pageString, "lxml")
imgs = soup.select('img')[1]
imgs = imgs.attrs['src']
temp.append(imgs)
try :
driver.find_element_by_class_name("coreSpriteRightChevron").click()
except NoSuchElementException :
break
driver.close()
print('이미지 주소 수집완료')
return temp
insta_url은 게시물 ID를 수집하는 py 파일의 이름입니다.
my_url_list()는 insta_url에 정의되어있는 게시물 ID를 수집하는 함수입니다.
for 문을 돌며 게시물 ID를 넣어줍니다.
게시물의 다음 이미지를 보는 버튼의 이름은 "coreSpriteRightChevron"입니다.
driver.find_element_by_class_name을 이용해서 해당 버튼이 있으면 없을 때까지 클릭하면서
while 문으로 게시물의 모든 이미지 주소를 리스트에 넣습니다.
수집이 완료된 리스트는 return 합니다.
저장
import insta_download
import urllib.request
myimg = insta_download.get_img_url()
num = 0
for img in myimg:
urllib.request.urlretrieve(img,'save_insta_'+str(num)+'.png')
num += 1
print('저장성공')
수집된 이미지 URL 리스트를 가져오기 위해서
insta_download.py를 import 해주고 get_img_url() 함수를 사용했습니다.
리턴된 이미지 주소 리스트를 myimg에 담고
리스트의 끝에 도달할 때까지 반복하며 다운로드합니다.
urllib.request의 urlretrieve 함수를 사용하면 쉽게 저장할 수 있습니다.
urllib.request.urlretrieve(이미지 주소, 저장 파일 이름)
Yeowoolee/insta-img-down
Python code to download Instagram images. Contribute to Yeowoolee/insta-img-down development by creating an account on GitHub.
github.com