오늘은 Selenium을 이용한 인스타그램 해쉬태그 크롤링을 실행해보도록 하겠습니다. 이번 글에서는 인스타그램 자동 로그인을 하는 방법에 대해서 우선 알아보겠습니다.
1
2
3
|
from selenium import webdriver
import time
import pandas as pd
|
cs |
우선 import 할 거 import 해주고,
1
2
|
driver = webdriver.Chrome("C:/chromedriver.exe")
driver.get("https://www.instagram.com/accounts/login/" )
|
cs |
Chrome Driver를 연결해줍니다. Chrome Driver는 아래의 링크에서 다운받을 수 있고, 자신이 다운받은 경로로 따옴표 안을 고쳐줍니다.
https://chromedriver.chromium.org/downloads
두번 째 줄은 instagram의 로그인 창을 열어주는 코드입니다.
저기까지 실행하면 chrome 창에 자동으로 인스타그램 로그인 페이지가 뜨게 됩니다. 참고로 chrome driver 버전 오류가 있을 수 있습니다. 오류 창을 잘 읽어보면 몇 이하로 또는 몇 이상으로 버전을 바꾸라는 말이 있으니, 버전을 맞춰주면 됩니다.
다음과 같이 로그인 페이지가 뜨는 것을 확인하고 다음으로 넘어가면 됩니다.
1
2
3
4
5
6
7
|
_id = driver.find_element_by_name('username')
_id.send_keys(instagram_id)
time.sleep(2)
_password = driver.find_element_by_name('password')
_password.send_keys(instagram_pw)
time.sleep(2)
|
cs |
이제 아이디와 비밀번호를 입력해야겠죠? 위의 코드에서 instagram_id에 자신의 아이디를, instagram_pw에 자신의 비밀번호를 입력해주고 실행합니다.
코드를 한 번 살펴보자면 find_element_by_name은 name 속성으로 layout의 위치를 가져오는 함수라고 할 수 있습니다. 웹 사이트에서 F12를 눌러 개발자 모드를 열고, 좌측 상단의 마우스 모양을 누르면 화면의 각 layout의 속성을 살펴볼 수 있습니다. 아이디를 입력하는 창을 눌러보면 name이 "username"으로 되어있는 것을 확인할 수 있죠?
따라서 driver.find_element_by_name('username') 라는 코드는 'username'이라는 이름을 가진 layout을 가져온다는 뜻으로 해석할 수 있습니다.
그러면 다음과 같이 자신의 아이디와 비밀번호가 잘 입력된 것을 볼 수 있습니다.
1
2
3
4
5
6
7
8
|
login_button = driver.find_element_by_css_selector('.sqdOP.L3NKy.y3zKF').click()
time.sleep(5) # 로그인 버튼 누르기
driver.find_element_by_css_selector('.sqdOP.yWX7d.y3zKF').click()
time.sleep(3) # 로그인 저장 나중에
driver.find_element_by_css_selector('.aOOlW.HoLwm').click()
time.sleep(3) # 설정 나중에
|
cs |
위의 코드를 실행하면 로그인이 완료됩니다.
참고로 driver.find_element_by_css_selector 는 위에서 'username'을 가져올 때와 같이 class 명으로 layout을 가져오는 코드입니다. 역시 개발자 모드를 열어서 원하는 layout을 클릭해보면 class 명이 나오는 것을 확인할 수 있습니다.
다음 글에서는 본격적으로 인스타그램 해쉬태그 크롤링을 하는 방법을 알아보겠습니다.
'프로젝트 및 실습 > Selenium' 카테고리의 다른 글
[Selenium] 인스타그램 해쉬태그 크롤링 (2) - 크롤링 및 시각화 (0) | 2021.08.11 |
---|