프로그래밍/웹크롤링 & 텍스트마이닝

[파이썬 웹크롤링] 인스타그램 크롤링 & 이미지 다운로드 받기 - 1

지원지원 2020. 8. 24. 23:11

오늘은 인스타그램 크롤링! 

아 너무 얕게만 하는 거 같아서 걱정이긴 한데 뭐 이거라도 하는 게 어디야 맞지맞지...?

오늘 할 거는 인스타그램 태그 검색하면 검색한 결과 이미지를 다운로드 받는 거를 해 볼거다!

 

먼저, 사용한 라이브러리는 BeautifulSoup, Selenium이다.

전에 beautifulSoup을 다뤄본 적이 있다.

새로 사용해 볼 라이브러리는 Selenium

 

Selenium이란? 

- 여러 언어에서 웹 드라이버를 통해서 웹 사이트 자동화 테스트를 위한, 또는 웹 자동화를 도와주는 라이브러리

(나무위킨가 어디 출처)

 

Selenium을 쓰는 이유는?

- 동적 웹페이지로 구성 되어 있는 경우, requests 라이브러리만으로는 크롤링하기가 어렵다

- 원하는 웹 사이트가 프로그램을 통한 접근을 허용 하지 않는 경우에도 사용한다.

 

Selenium을 설치할 때는 웹 드라이버가 추가로 필요하다. 이 때 웹은 본인이 사용하는 브라우저에 맞춰서 다운로드하면 된다. 이거 어디서 보냐면 (크롬일 경우) 창 오른쪽 세로로 된 점 세개 있는 부분 -> 도움말 -> chrome 정보

이렇게 보면 더 쉬우려나^&^

https://chromedriver.chromium.org/downloads

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

chromedriver.chromium.org

여기서 다운로드 받아서 본인이 작업하는 위치에다가 넣으면 된다.

 

이제 본격적으로 시작해볼깡

라이브러리를 다 import 해 주기

"""

인스타그램을 크롤링할 때, 왜 Selenium을 쓰냐면, 일반적으로 인스타그램에서는 페이지 소스가 대부분 Java Script로 되어 있다. 그래서 크롬에서 개발자 도구로 본 태그들이 안 보일거다!

왜냐면, java script는 일단 브라우저를 열고 난 다음에 페이지를 보여주면서 데이터를 불러오는 형식이다. 

인스타그램은 계속 스크롤하면서 데이터들을 불러오는 형식이기 때문에 일반적으로 BeautifulSoup을 쓰지 못하고 Selenium 웹 드라이버를 사용해서 페이지를 불러와 줘야 한다. 

"""

그리고 인스타그램 base url을 따준다. 

baseurl = "https://www.instagram.com/explore/tags/" <- 기본이 되는 주소이다

plusurl에는 우리가 검색할 태그를 입력받아준다. 

최종적으로 사용할 url은 baseurl+plusurl이 된다.

이렇게 해서 출력을 해 보면, 

이렇게 검색할 태그를 입력 받을 수 있다. 

난 애쉬 아일랜드 검색해서 이미지를 다운 받을거라 ashisland를 쳐 줬다.

한글로 검색하고 싶다면, url = baseurl + quote_plus(plusurl)을 해 주면 된다. 이렇게 해 보진 않았지만 되지 않을까?

 

크롬 웹 드라이버를 driver에 불러와준다. 

driver.get(url)은 우리가 미리 설정한 url을 드라이버가 가지고 오게 하는 코드!

인스타그램 페이지를 불러오는데 시간이 걸릴 수도 있다. 그래서 time.sleep(3)으로 3초 기다린 다음, 데이터를 가지고오도록 할 것이다. 

BeautifulSoup으로 html 소스를 가지고 오고, 

 잘 보면 이 이미지들이 가지고 있는 class name은 'v1Nh3 kIKUG _bz0w' 이다.

이것들은 class 속성이기 때문에 앞에 . 을 찍어주고 띄어쓰기를 다 없애준다. (왠지는 잘 모르겠다 강의 보고 따라한거라..)

일단 오늘은 여기까지... 

글 쓰는 것도 일이구만 

힘들어 죽게써ㅠㅡㅠ

 

이거 이어서 다 쓰면, 

다음에는 Selenium 기초를 한 번 다뤄볼까한다.

아농