필요성
api로 가져오자니 secret과 제한이 있어서 셀레니움으로 만들어봤습니다.
준비물
먼저 준비해야할 것은 chromedriver, 크롬드라이버입니다.
구글에 chromedriver 로 검색하면, 아래와 같은 웹사이트가 나옵니다. 현재 크롬버전에 맞는 버전으로 다운 받습니다.
https://chromedriver.chromium.org/downloads
두번째는 라이브러리 설치입니다.
기본적으로 Python이 깔려있어야겠죠!? 그리고 필요한 설치는 selenium입니다. 아래 코드에서 실행하는 방식이 자동실행되는 웹브라우저를 이용하는 것이기 때문이지요.
세번째는 파이썬 코드 수정입니다.
이제 Python을 실행시킬 폴더에 두고 아래 코드의 chromedriver 파일위치만 바꿔줍니다.
self.driver = webdriver.Chrome('C:\Study\chromedriver', chrome_options=chrome_options)
그 뒤로는 PapagoApi를 생성해서 get_trans 함수를 이용하여 결과를 가져오면 됩니다.
간단하죠!?
#!/usr/bin/env python # -*- coding: utf-8 -*- from selenium import webdriver import time class PapagoApi: def __init__(self): self.base_url = 'https://papago.naver.com' chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("--headless") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") self.driver = webdriver.Chrome('C:\Study\chromedriver', chrome_options=chrome_options) self.driver.set_window_size(1920, 1080) self.driver.implicitly_wait(10) self.driver.get(self.base_url) def get_trans(self, text): self.driver.find_element_by_xpath('//*[@id="txtSource"]').click() self.driver.find_element_by_id("txtSource").clear() self.driver.find_element_by_id("txtSource").send_keys(text) time.sleep(3) data = self.driver.find_element_by_xpath('//*[@id="txtTarget"]/span').text self.driver.find_element_by_xpath('//*[@id="txtSource"]').click() self.driver.find_element_by_id("txtSource").clear() if data: return data else: return '' papago = PapagoApi() print(papago.get_trans('번역테스트')) print(papago.get_trans('Last 정보'))
위의 코드를 실행한 결과는 아래와 같습니다.
Translation test
About Last
추가설명
chrome driver options에 --headless를 넣어 화면이 출력되지 않도록 옵션을 넣었습니다. 백그라운드로 돌기 때문에 실제로 돌아가지만 눈에는 보이지 않게 되는 것이지요.
만약 pycharm에서 실행하는 거라면, 아래와 같은 에러가 뜰 수 있습니다.
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
unicode 에러로 문법 오류인데요.
그럴 경우 webdriver.Chrome('C:\...', ...) 부분에 r을 붙여주면 됩니다.
webdriver.Chrome('C:\Study\chromedriver', chrome_options=chrome_options)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
webdriver.Chrome(r'C:\Study\chromedriver', chrome_options=chrome_options)
간단한 생활코딩, 한번씩 실행해보세요~
'다양한 TIP' 카테고리의 다른 글
윈도우10 다른 화면에 표시하는 방법(빔 프로젝터, 듀얼모니터 등) (0) | 2022.06.10 |
---|---|
RAID 번호에 따른 차이점(디스크 개수에 따라 고민해볼 구성들) (0) | 2022.05.26 |
소프트웨어에서 사용하는 CRUD 뜻은 무엇일까요? (0) | 2022.05.25 |
댓글