파이썬(Python)/인스타그램

인스타그램 자동검색(해시태그)

끄적끄적아무거나 2020. 12. 3. 17:26
반응형

 

지난번 자동 로그인 다음으로 자동 검색을 실행하겠다.

코드>>

 

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time

class InstagramAutomation():
    def log_in(self):
        options = webdriver.ChromeOptions() 
        # options.headless = True
        options.add_experimental_option("excludeSwitches", ["enable-logging"])
        options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64)/AppleWebKit/537.36 \
            (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36")
        self.driver = webdriver.Chrome(options=options)
        self.driver.get("https://www.instagram.com/")

        # time.sleep(3)

        try:
            username_box_check = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located\
                ((By.XPATH, '//*[@id="loginForm"]/div/div[1]/div/label/input')))
            print(username_box_check)
        except:
            print("error")

        username_box = self.driver.find_elements_by_xpath('//*[@id="loginForm"]/div/div[1]/div/label/input')[0]
        username_box.send_keys("your ID")
        password_box = self.driver.find_elements_by_xpath('//*[@id="loginForm"]/div/div[2]/div/label/input')[0]
        password_box.send_keys("your password!")
        login_button = self.driver.find_elements_by_xpath('//*[@id="loginForm"]/div/div[3]/button')[0]
        login_button.click()


    def searchHashtag(self, hashtag):
        try:
            search_input = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located\
                ((By.XPATH, '//*[@id="react-root"]/section/nav/div[2]/div/div/div[2]/input')))
            print(search_input)
            search_input.send_keys("#"+hashtag)
            first_index = WebDriverWait(self.driver, 10).until(EC.presence_of_element_located\
                ((By.XPATH, '//*[@id="react-root"]/section/nav/div[2]/div/div/div[2]/div[4]/div/a[1]')))
            first_index.click()

        except:
            print("error")


oop_instagram = InstagramAutomation()
oop_instagram.log_in()
oop_instagram.searchHashtag("BTS")
time.sleep(100)

 

결과>>

 

 

 

 

 

주석>>

이번에는 자동 로그인이 된 다음에 검색자동화를 해보았다.

 

searchHashtag 함수를 추가하였다. 우선 인스타 웹사이트에서 검색창에 해당하는 xpath를 찾아서 원하는 검색어를 입력하는 문구를 넣었다.

 

로그인 다음에 화면이 로딩하기 전에 검색창을 찾는 경우를 방지 하기 위해 webDriverWait을 사용해서 10초 내로 검색창 xpath 값이 나오면 실행하게 하였다.

 

그리고 "#"값을 넣은 검색어를 입력하게 하였다.

 

그리고 검색되면 해당 검색어가 포함된 여러 항목이 나올 수 있다. 이런 경우에 첫번째에 해당하는 항목의 xpath 값을 가져와서 클릭하게 하였다.

 

 

 

반응형