def driver_start(self, is_headless=False): ''' Start driver 구글 드라이버 실행 Parameter ----------------------------- start_date: 지정한 날짜부터 크롤링 시작 ''' version = chromedriver_autoinstaller.get_chrome_version()[:2] if is_headless: webdriver_options = webdriver.ChromeOptions() webdriver_options.add_argument('headless') try: self.driver = webdriver.Chrome( 'C:\\Users\\Chan\\.conda\\envs\\baseball\\lib\\site-packages\\chromedriver_autoinstaller\\' + version + '\\chromedriver', options=webdriver_options) except: chromedriver_autoinstaller.install() else: try: self.driver = webdriver.Chrome( 'C:\\Users\\Chan\\.conda\\envs\\baseball\\lib\\site-packages\\chromedriver_autoinstaller\\' + version + '\\chromedriver') except: chromedriver_autoinstaller.install()
def __init__(self): super().__init__() global driver_path # Download Chromedriver if chrome_check == 0: QMessageBox.information(self, 'Chrome Browser', '크롬 브라우져를 설치해주세요.', QMessageBox.Ok, QMessageBox.Ok) quit() if check == 0: QMessageBox.information(self, 'ChromeDriver', '필요한 프로그램을 다운받습니다.', QMessageBox.Ok, QMessageBox.Ok) log("Download Chromedriver") version = chromedriver_autoinstaller.get_chrome_version().split( '.')[0] doc = urllib.request.urlopen( 'https://chromedriver.storage.googleapis.com', context=context).read() root = elemTree.fromstring(doc) for k in root.iter('{http://doc.s3.amazonaws.com/2006-03-01}Key'): if k.text.find(get_major_version(version) + '.') == 0: chromedriver_version = (k.text.split('/')[0]) print(chromedriver_version) chrome_version_url = 'https://chromedriver.storage.googleapis.com/' + chromedriver_version + '/chromedriver_mac64.zip' download(chrome_version_url, path + "/chromedriver.zip") fantasy_zip = zipfile.ZipFile(path + '/chromedriver.zip') fantasy_zip.extractall(path) os.chmod(path + '/chromedriver', 755) elif check == 1: log("Chromedriver is installed") self.setupUi(self) self.setWindowIcon(QIcon('icon.ico')) # Icon setting # Auto login check file (user.db) global auto_login_check auto_login_check = 0 try: fileObj = Path("user.db") if fileObj.is_file() == True: conn = sqlite3.connect("user.db") cur = conn.cursor() cur.execute('select * from user') global user user = cur.fetchall() user_id = user[0][0] user_pw = user[0][1] self.login_id.setText(user_id) self.login_pw.setText(user_pw) auto_login_check = 1 except: pass # Login Buttons self.login_button.clicked.connect(self.login) self.login_id.returnPressed.connect(self.listener_login_id) self.login_pw.returnPressed.connect(self.listener_login_pw)
def chromedriver(): chrome_version = chromedriver_autoinstaller.get_chrome_version() logger.debug("Google Chrome version {0} is installed.".format(chrome_version)) try: logger.debug("Checking and/or installing chromedriver") chromedriver_autoinstaller.install() finally: logger.debug("Chromedriver is ok.")
def initialize(): chrome_ver = chromedriver_autoinstaller.get_chrome_version().split('.')[ 0] # 크롬드라이버 버전 확인 try: driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe') except: chromedriver_autoinstaller.install(True) driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe') driver.implicitly_wait(10)
def __init__(self): super().__init__() global driver_path # Download Chromedriver if chrome_check == 0: QMessageBox.information(self, 'Chrome Browser', '크롬 브라우져를 설치해주세요.', QMessageBox.Ok, QMessageBox.Ok) quit() if check == 0: QMessageBox.information(self, 'ChromeDriver', '필요한 프로그램을 다운받습니다.', QMessageBox.Ok, QMessageBox.Ok) log("Download Chromedriver") chrome_ver = chromedriver_autoinstaller.get_chrome_version().split( '.')[0] driver_path = f'./{chrome_ver}/chromedriver.exe' if os.path.exists(driver_path): log(f"chrom driver is insatlled: {driver_path}") else: log(f"install the chrome driver(ver: {chrome_ver})") chromedriver_autoinstaller.install(True) elif check == 1: log("Chromedriver is installed") self.setupUi(self) self.setWindowIcon(QIcon('src\icon.ico')) # Icon setting # Auto login check file (user.db) global auto_login_check auto_login_check = 0 try: fileObj = Path("user.db") if fileObj.is_file() == True: conn = sqlite3.connect("user.db") cur = conn.cursor() cur.execute('select * from user') global user user = cur.fetchall() user_id = user[0][0] user_pw = user[0][1] self.login_id.setText(user_id) self.login_pw.setText(user_pw) auto_login_check = 1 except: pass # Login Buttons self.login_button.clicked.connect(self.login) self.login_id.returnPressed.connect(self.listener_login_id) self.login_pw.returnPressed.connect(self.listener_login_pw)
def start_interpark(self): try: shutil.rmtree(r"c:\chrometemp") # 쿠키 / 캐쉬파일 삭제 except FileNotFoundError: pass subprocess.Popen( r'C:\Program Files\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\chrometemp"' ) # 디버거 크롬 구동 option = Options() option.add_experimental_option("debuggerAddress", "127.0.0.1:9222") chrome_ver = chromedriver_autoinstaller.get_chrome_version().split( '.')[0] try: self.driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option) except: chromedriver_autoinstaller.install(True) self.driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option) self.driver.implicitly_wait(10) # 사이즈조절 self.driver.set_window_size(1400, 1000) self.driver.get('https://ticket.interpark.com/Gate/TPLogin.asp') # 삭제해야 되는 부분 self.driver.switch_to.frame( self.driver.find_element( By.XPATH, "//div[@class='leftLoginBox']/iframe[@title='login']")) userId = self.driver.find_element(By.ID, 'userId') userId.send_keys('kbyms104') userPwd = self.driver.find_element(By.ID, "userPwd") userPwd.send_keys('ghkdwp131!') userPwd.send_keys(Keys.ENTER)
def chromedriver_update(): ''' this function auto update chrome driver : there is no arguments ''' chrome_ver = AutoChrome.get_chrome_version().split('.')[0] current_list = os.listdir(os.getcwd()) chrome_list = [] for i in current_list: path = os.path.join(os.getcwd(), i) if os.path.isdir(path): if 'chromedriver.exe' in os.listdir(path): chrome_list.append(i) old_version = list(set(chrome_list) - set([chrome_ver])) for i in old_version: path = os.path.join(os.getcwd(), i) shutil.rmtree(path) if not chrome_ver in current_list: AutoChrome.install(True) else: pass
try: shutil.rmtree(r"c:\chrometemp") #쿠키 / 캐쉬파일 삭제 except FileNotFoundError: pass ## 경로 설정을 따로 하지 않고 크롬 설치시 아래 경로가 기본값 subprocess.Popen( r'C:\Program Files\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\chrometemp"' ) option = Options() ## 9222포트로 크롬을 염 option.add_experimental_option("debuggerAddress", "127.0.0.1:9222") chrome_ver = chromedriver_autoinstaller.get_chrome_version().split('.')[0] try: driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option) except: chromedriver_autoinstaller.install(True) driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option) driver.implicitly_wait(10) ## 추출한 url에서 & 앞까지 끊어줌 def vidstrip(playlist): for i in range(len(playlist)): end = playlist[i].find("&") playlist[i] = playlist[i][:end]
def grp(pat, txt): res = re.search(pat, txt) return res.group(0) if res else '&' def find_files(filename, search_path): for root, _, files in os.walk(search_path): if filename in files: return os.path.abspath(os.path.join(root, filename)) chrome_version = "" colorama.init() try: PATH_DRIVER = chromedriver_autoinstaller.install(True) chrome_version = chromedriver_autoinstaller.get_chrome_version() print("Chrome version :", chrome_version) except IndexError: PATH_DRIVER = find_files("chromedriver.exe", ".") print("Chrome version not found") print( termcolor.colored( 'Chrome version not found{}'.format(colorama.Style.RESET_ALL), 'yellow')) chromedriver_version = "" if sys.platform.startswith("win"): chromedriver_version = PATH_DRIVER.split("\\")[-2] else: chromedriver_version = PATH_DRIVER.split("/")[-2] if chrome_version.split(".")[0] == chromedriver_version:
res = re.search(pat, txt) return res.group(0) if res else '&' def find_files(filename, search_path): for root, _, files in os.walk(search_path): if filename in files: return os.path.abspath(os.path.join(root, filename)) ua = UserAgent(verify_ssl=False) USER_AGENT = sorted(ua.data_browsers["chrome"], key=lambda a: grp(r'Chrome/[^ ]+', a))[-1] try: PATH_DRIVER = chromedriver_autoinstaller.install(True) print("Chrome version :", chromedriver_autoinstaller.get_chrome_version()) except IndexError: PATH_DRIVER = find_files("chromedriver.exe", ".") #except urllib.error.URLError: # print("Aucune connection internet") # sys.exit() print(PATH_DRIVER) PATH_DB = os.path.dirname(__file__) + "/resources/teams.db" PATH_TOKENS = os.path.dirname(__file__) + "/bookmakers/tokens.txt" PATH_FREEBETS = os.path.dirname(__file__) + "/freebets.txt" if not os.path.exists(PATH_FREEBETS): with open(PATH_FREEBETS, "a+") as file: for bookmaker, rate in FREEBETS_RATES.items():
def Clear_CAPCHA(self): if CAPCHA_Error == 0: self.listWidget.addItem( '[system] 이 기능은 CAPCHA에 의해 진행이 막힌\n 후에 사용 가능합니다.') else: # ---------------------------------------------------------------------------------------------------- '''사용자 입력 저장''' facebook_ID = self.lineEdit_ID.text() facebook_PW = self.lineEdit_PW.text() # ---------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------- '''이스터에그''' if facebook_ID == 'sex' or facebook_PW == 'sex': self.listWidget.addItem( '[system] 꼭 이런 빈칸만 있으면 \'sex\' 쳐보는\n 사람 있을 줄 알았다...' ) elif facebook_ID == '윤태영' or facebook_PW == 'dbsxodud': self.listWidget.addItem( '[system] ㅊㅋ! 이스터에그를 발견하셨습니다!\n 문자 주면 선물을 드립니다.' ) elif facebook_ID == '' or facebook_PW == '': self.listWidget.addItem('[system] 입력란을 모두 채워주세요.') # ---------------------------------------------------------------------------------------------------- else: # 디버깅 크롬에 남은 기록 삭제 try: shutil.rmtree(f"c:\chrometemp") #쿠키 / 캐쉬파일 삭제 except FileNotFoundError: pass # ---------------------------------------------------------------------------------------------------- '''크롬 구동부''' option = Options() option.add_argument('start-maximized') # 전체 화면 chrome_ver = chromedriver_autoinstaller.get_chrome_version( ).split('.')[0] try: driver = webdriver.Chrome( f'./{chrome_ver}/chromedriver.exe', options=option) except: chromedriver_autoinstaller.install(True) driver = webdriver.Chrome( f'./{chrome_ver}/chromedriver.exe', options=option) driver.implicitly_wait(10) # 페이지 로딩 10초 기다려준다. 10초 후에는 얄짤없다. # ---------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------- '''(밴드 입장 ~ 페이스북 로그인)''' driver.get('https://band.us/feed') driver.find_element_by_xpath( '//*[@id="login_list"]/li[4]/a').click() # '페이스북 로그인' 버튼 driver.find_element_by_xpath('//*[@id="email"]').send_keys( facebook_ID) driver.find_element_by_xpath('//*[@id="pass"]').send_keys( facebook_PW) driver.find_element_by_xpath( '//*[@id="loginbutton"]').click() # 로그인 버튼 # ---------------------------------------------------------------------------------------------------- self.listWidget.addItem('[system] CAPCHA를 해제하고 크롬을 닫아주세요.')
def Checking_start(self): # ---------------------------------------------------------------------------------------------------- '''사용자 입력 저장''' facebook_ID = self.lineEdit_ID.text() facebook_PW = self.lineEdit_PW.text() # ---------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------- '''이스터에그''' if facebook_ID == '' or facebook_PW == '': self.listWidget.addItem('[system] 입력란을 모두 채워주세요.') # ---------------------------------------------------------------------------------------------------- else: # 디버깅 크롬에 남은 기록 삭제 try: shutil.rmtree(f"c:\chrometemp") #쿠키 / 캐쉬파일 삭제 except FileNotFoundError: pass # ---------------------------------------------------------------------------------------------------- '''크롬 구동부''' option = Options() option.add_argument('start-maximized') # 전체 화면 chrome_ver = chromedriver_autoinstaller.get_chrome_version().split( '.')[0] try: driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option) except: chromedriver_autoinstaller.install(True) driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option) driver.implicitly_wait(10) # 페이지 로딩 10초 기다려준다. 10초 후에는 얄짤없다. # ---------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------- '''(밴드 입장 ~ 페이스북 로그인)''' driver.get('https://band.us/feed') driver.find_element_by_xpath( '//*[@id="login_list"]/li[4]/a').click() # '페이스북 로그인' 버튼 driver.find_element_by_xpath('//*[@id="email"]').send_keys( facebook_ID) driver.find_element_by_xpath('//*[@id="pass"]').send_keys( facebook_PW) driver.find_element_by_xpath( '//*[@id="loginbutton"]').click() # 로그인 버튼 # ---------------------------------------------------------------------------------------------------- def First_Check(): # (매크로 GUI가 맨 앞에 올라와 있으면 Alt+Tab 정상적으로 동작 X) pyautogui.keyDown('Alt') for j in range(1, 3): pyautogui.press('Tab') pyautogui.keyUp('Alt') pyautogui.hotkey('Alt', 'Tab') while True: new_feed = driver.find_elements_by_css_selector( '#content > div > button.btnFeedTop._btnNewFeedUpdate[style=""]' ) # '새글 보기' 버튼 나왔는지 확인 if len(new_feed) == 1: driver.find_element_by_css_selector( '#content > div > button.btnFeedTop._btnNewFeedUpdate[style=""]' ).click() break else: time.sleep(10) for i in range(1, 3): pyautogui.hotkey('Alt', 'Tab') time.sleep(0.5) driver.find_element_by_xpath( '//*[@id="content"]/div/div[2]/div/section[1]/section/div/div/section/div/div[2]/div[2]/div/div' ).click() # 출석체크 위젯 time.sleep(0.2) try: driver.find_element_by_class_name('etc').click() # 출석체크 클릭 except NoSuchElementException: pass def Next_Checks(): time.sleep(0.2) driver.find_element_by_xpath( '//*[@id="wrap"]/div[2]/div/div/section/button[4]').click( ) # 닫기 버튼 while True: new_feed = driver.find_elements_by_css_selector( '#content > div > button.btnFeedTop._btnNewFeedUpdate[style="display: block;"]' ) # '새글 보기' 버튼 나왔는지 확인 if len(new_feed) == 1: driver.find_element_by_css_selector( '#content > div > button.btnFeedTop._btnNewFeedUpdate[style="display: block;"]' ).click() break else: time.sleep(10) for i in range(1, 3): pyautogui.hotkey('Alt', 'Tab') time.sleep(0.5) driver.find_element_by_xpath( '//*[@id="content"]/div/div[2]/div/section[1]/section/div/div/section/div/div[2]/div[2]/div/div' ).click() # 출석체크 위젯 time.sleep(0.2) try: driver.find_element_by_class_name('etc').click() # 출석체크 클릭 except NoSuchElementException: pass # ---------------------------------------------------------------------------------------------------- '''(캡차 감지 ~ 출석체크 무한 츠쿠요미)''' try: driver.find_element_by_xpath('//*[@id="content"]/div/button[2]' ) # 캡차 떴는지 '새글 보기' 버튼 확인으로 떠보기 except NoSuchElementException: pyautogui.hotkey('Alt', 'Tab') driver.close() self.listWidget.addItem( '[system] CAPCHA 때문에 더 이상 진행할 수\n 없습니다. 5분 후에 다시 시도해주세요.' ) global CAPCHA_Error CAPCHA_Error = 1 # 캡차로 인해 막힌 경우 == 1 else: check_count = 1 while True: if check_count == 1: First_Check() else: Next_Checks() check_count += 1
def get_chrome_version(): """PC에 설치된 크롬 버전을 반환합니다""" return chromedriver_autoinstaller.get_chrome_version()
import os from selenium import webdriver from time import sleep import chromedriver_autoinstaller drVer = str(chromedriver_autoinstaller.get_chrome_version()) drVer = drVer[0:drVer.index(".")] banner = """ __ __ _ _ ____ _ _ _ \ \ / / ___ __ _ | |_ | |__ / ___| | |_ (_) | | ___ \ \ /\ / / / _ \ / _` | | __| | '_ \ \___ \ | __| | | | | / _ \ \ V V / | __/ | (_| | | |_ | | | | ___) | | |_ | | | | | (_) | \_/\_/ \___| \__,_| \__| |_| |_| |____/ \__| |_| |_| \___/ ----------------------------------------------------------------""" def printBanner(): os.system('cls' if os.name == 'nt' else 'clear') print(banner) def printData(city, days, alert): printBanner() print(f"""Şehir : {city[0]} - {'Merkez' if city[1] == '' else city[1]} Güncelleme Zamanı : {city[2]} ---------------------------------------------------------------- Günler | Sıcaklık | Nem | Durum | ---------------------------------------------------------------- Şuan |{city[3]:^12}|{city[4]:^9}|{city[5]:^30}|
driver.close() print("DEBUG MESSAGE: page closed.") news_list.append('\n\n------------- 미 증시 map 끝 ------------------') for msg in news_list: news_msg = news_msg + '\n' + msg print(news_msg) return news_msg # auto update chrome driver chromedriver_update() chrome_ver = AutoChrome.get_chrome_version().split('.')[0] path = os.path.join(os.getcwd(), chrome_ver) path = os.path.join(path, 'chromedriver.exe') print(path) # -----------definition and basic setting----------- options = webdriver.ChromeOptions() options.add_argument('--ignore-certificate-errors') options.add_argument('--ignore-ssl-errors') driver = webdriver.Chrome(path, options=options) # setting locale to use Korean locale.setlocale(locale.LC_ALL, '') # setting slack token