오늘은 인스타그램 크롤링에 대해서 포스팅 하겠습니다!


앞에서 말씀드린 것처럼 인스타그램을 크롤링 할 때는 사실 로그인이 필요없습니다


로그인 없이도 검색이 가능하기 때문이죠


(참고로 셀레니움을 통해서 로그인을 할 필요가 없는 것 입니다!)

 


그렇다면 우리는 어떻게 크롤링을 진행하면 좋을까요?

 

 

 


순서를 정하기 위해선 얻고자 하는 데이터를 명확히 정해야합니다


저는 인스타그램의 해시태그 내용을 가져오려 합니다!!

인스타그램 "핫플" 검색 결과



사진은 초상권 보호를 위해;;ㅎㅎ


이런식으로 검색이 가능합니다!


그리고 해시태그를 가져오기 위해서는 검색 시 나오는 게시물들을 클릭해야 내용을 볼 수 있는 것을


확인했습니다

 

Selenium과 BeautifulSoup 동시 활용

 

 

 

데이터가 어디있는지 우리는 이제 알고 있습니다!

그렇다면 해당 데이터들을 어떻게 효율적으로 들고 올 것인가에 대해 생각해 봐야합니다!

인스타그램은 infinite scroll, 스크롤을 계속 내리면서 게시물을 불러오는 형태입니다

 

 

 

인스타그램 검색화면 "페이지 소스"

 

 

또한, 각 게시물들의 주소가 있는 a태그의 상위 태그 및 속성값이

 

동일한 것을 확인할 수 있습니다

 

 


이런 점을 토대로 해서 저는 셀레니움에서 페이지를 조종하고

스크롤 다운을 시켜 페이지소스가 갱신시키고

갱신된 값에서 BeautifulSoup를 통해 게시물 주소를 파싱하여

 

게시물 주소를 통해 다시 페이지 소스를 받아와 그 곳의 해시태그내용을 가져오는 방식으로 코드를 구성했습니다

 

 

 

 

말을 간결하게 정리하자면

 

 

1. 셀레니움을 통해 변경되는 페이지소스를 계속 받아온다

 

2. 받아온 페이지소스에서 뷰티풀솝을 통해 게시물 주소를 파싱한다

 

3. 파싱을 통해 얻은 게시물 URL을 requests를 통해 페이지소스를 얻어온다

 

4. 받아온 페이지소스를 다시 뷰티풀솝을 통해 해시태그 내용을 파싱한다.

 

 

이런 방식으로 진행됩니다!

 

물론 이건 제 개인적인 방법임으로 각자 얻고자하는 데이터에 따라서 방법을 달리하시면 좋을 듯 합니다!

 

 

 

제가 짠 코드는 완성도가 떨어져 따로 올리지는 않았습니다.

 

대신, 코드를 짜시는 데에 있어서 어려움이 있으시다면 댓글 달아주세요!

 

+ Recent posts