[Python] Selenium 스크롤 클릭해서 수동으로 내리기

프로그래밍/Python 2022. 1. 16. 16:36

Selenium으로 아버지 업무 자동화를 도와드리면서 저기 위 사이트 레이아웃 처럼 되있는 곳의 내부 스크롤(Inner Scroll) 을 내려야 하는 상황이 생겼습니다. 저 내부 스크롤을 내리면 스크롤 왼쪽에 보이는 표가 동적으로 로딩되면서 보여지는데 저 스크롤을 살짝식 내리면서 동적 테이블(Dynamic Table) 의 요소를 로딩하고 데이터를 가져오는게 목표였습니다. 그런데 보통 Selenium에서 스크롤을 내리는 방법을 할때 직접 클릭하는 방법을 사용하는게 아니라 JS를 직접 execute시켜서 내리는 방법이 대부분입니다. 이게 가장 좋은 방법이기도 하구요. 그런데 문제는 지금 제 Selenium 환경이 사이트 특성상 IE Driver을 사용하고 있고 자바스크립트로 내리면 화면은 내려가는데 JS로 ..

Article Thumbnail
[Python] PyQt5 학습 정보, 비동기 작업, 쓰레드 작업 등 정보 모음

프로그래밍/Python 2022. 1. 14. 18:05

PyQt5 쓰레드 이용하여 비동기 작업으로 GUI 응답없음 방지하기 (Best Example) https://ybworld.tistory.com/39?category=929856 [Python/파이썬] PyQt5 사용시 필요한 쓰레드 개념 이해 : 파이썬 GUI 응답없음 해결 방법 - 2 ※ 이 글을 쓰는 사람은 SW 비전공자입니다. ※ 개인 공부를 위해 정리하는 글이며, 작성한 코드들은 효율성, 깔끔함(?) 등과는 거리가 멀 수 있습니다. 1편 : 2021.03.06 - [코딩/Python] - [Python/파이썬] ybworld.tistory.com Pyside6에서 Material(Modern) Design하기 https://www.youtube.com/watch?v=Jn0PpzB14Y8 http..

Article Thumbnail
시놀로지 NAS + JupyterLab 원격 IDE 환경

프로그래밍/Python 2022. 1. 4. 00:28

위 사진은 시놀로지에서 서버가 돌아가고있는 JupyerLab 환경입니다. 포트포워딩도 되어있어서 비밀번호만 알면 언제 어디서든지 url로 접속해서 Python 코딩이 가능합니다. 밖에서 백준풀때나 코딩으로 허세부리고 싶을때 유용하게 쓰고 있습니다. 속도는 네이티브 환경에서 하는거랑 비슷비슷한데 당연히 네이티브보단 느립니다. 저희집에 컴퓨터가 노트북 포함 4대쯤 있는데 이리저리 왔다갔다 하면서 해도 NAS를 기반으로 연동되서 매우 유용합니다. Anaconda나 JupyerLab(또는 Jupyter Notebook) 을 컴퓨터마다 깔아서 라이브러리가 따로 관리되는게 상당히 번거롭거든요. 아마 군대에 있었음 유용하게 썼을건데요.. ㅎㅎ 별로 말하고 싶지 않군요.

Article Thumbnail
[Python] Selenium + IEDriver 성능 개선 방법

프로그래밍/Python 2021. 11. 1. 02:40

Selenium + ChromeDriver 조합 자체도 느려서 웹 사이트 뜯어가면서 requests 보고있는 판국에 굳이 인터넷 익스플로러 쓰겠다고 Selenium + IEDriver을 쓰는 분들이 얼마나 많을까 싶지만 지금 제가 아버지 업무자동화를 위해 만들고 있는 사이트가 구닥다리라 Active X + 보안 유틸리티 떡칠이라는 끔직한 조합 덕에 어쩔수 없이 IEDriver을 쓰고 있습니다. IEDriver을 쓰면서 조금의 팁을 작성합니다. 1. IEDriver이 아예 작동하지 않을때 https://pgh268400.tistory.com/123 [C#] Selenium IEDRIVER이 작동하지 않을때 해결법 Selenium으로 IEDriver을 제어하면 일부 컴퓨터에서 프로그램 구동이 되지 않고 소리..

Article Thumbnail
[Python] 디시인사이드 글 검색 크롤링 / 파싱

프로그래밍/Python 2021. 10. 30. 19:11

import time import requests, re from bs4 import BeautifulSoup from IPython.core.display import display, HTML #봇 차단을 위한 헤더 설정 headers = { "Connection" : "keep-alive", "Cache-Control" : "max-age=0", "sec-ch-ua-mobile" : "?0", "DNT" : "1", "Upgrade-Insecure-Requests" : "1", "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/53..

Article Thumbnail
비트코인 픽 사이트와 연동해서 텔레그램 알림을 주는 프로그램을 개발했습니다

프로그래밍/Python 2021. 10. 11. 02:16

비트코인 종목 추천 사이트와 연동하여 종목 추천이 이루어지는 오전 12:20, 오전 9시 정해진 시간에 따라 사이트에서 데이터를 가져와서 텔레그램으로 알림을 주는 프로그램입니다. 원래는 시간당 n만원씩 받고 외주 받는 형태로 진행하는데 같이 투자 진행하시는 분이 수익 내는데 도움도 많이 주시고 하셔서 특별히 공짜로 만들어드렸습니다 ㅎㅎ 원리는 간단하게 사이트에 자동으로 로그인한뒤 일정시간마다 requests를 보내고 나오는 response를 정리해서 Telegram 봇에 채팅을 보내도록 시키는 형태입니다. 일정시간마다 실행하는건 집에 24시간 돌아가는 저전력 NAS서버 시놀로지 작업 스케줄러를 이용해서 실행합니다. 아무래도 시놀로지가 리눅스 기반이라 크롬 드라이버는 사용이 안되서 Python의 reque..

Article Thumbnail
[Python] smi 자막 특정 위치부터 싱크 조절하기

프로그래밍/Python 2021. 9. 22. 02:00

from easysmi import * #단일 파일 처리 folder = 'C:/자막/' filename = '[SubsPlease] Tokyo Revengers - 02 (1080p) [B66CEAA7].smi' p = parse_smi(folder + filename) search_line = find_line_by_text(p, "sub by") if search_line != -1: s = sync_shift(p, search_line, -10000) s = sync_shift(s, 0, 1300) make_dirs(folder + 'output') #make output folder new_path = folder + "output/" + filename file_save(new_path, s)..

Article Thumbnail
[Python] 인코딩 오류 없이 텍스트 파일 읽기

프로그래밍/Python 2021. 9. 17. 20:57

def read_file(path): f = open(path, "r") line = f.readline() data = "" while line: data += line line = f.readline() f.close() return data smi 자막 파일을 열어서 싱크 조절을 위해 다음과 같이 코딩하고 즐거운 마음으로 실행을 하였습니다. UnicodeDecodeError: 'cp949' codec can't decode byte 0x01 in position 1: illegal multibyte sequence 어김없이 등장하는 오류.. 인터넷에 검색해보니 수많은 예제가 뜨네요. 인코딩이 안 맞아서 안 열리나 봅니다. 파이썬은 기본적으로 파일이 ANSI로 작성되었다고 가정하고 cp949라는 코덱..

Article Thumbnail
[Python] 가상화폐 트레이딩 봇 제작중

프로그래밍/Python 2021. 8. 31. 02:47

요즘 아는 분들과 파이썬을 이용해 가상화폐 트레이딩 봇 프로젝트를 진행중입니다. 차트좀 볼줄 아시는분 + 컴퓨터 공학과 학부생분과 같이 수익률을 위해 프로젝트를 진행하고 있습니다. 우선 전략은 변동성 돌파 + ma N일선 돌파를 기반으로 하여 공포/탐욕 수치, 시가총액, 온체인 지표 등 다양한 보조지표로 정확도를 올려볼 생각입니다. 사실 이걸 만들게 된게 API 지수로 가상화폐 픽을 제공하는 사이트가 있던데 사용하신 분에 따르면 이게 적중률이 높은 편이라고 해서 어떤식으로 작동하는지 궁금해서 제작을 시작하게 되었습니다~ 끝까지 잘 마칠 수 있을진 모르겠지만 변동성 돌파가 과연 유의미한 결과를 가져다줄지도 궁금하네요 ^^

Article Thumbnail
[Python] 구글 코랩(Google Colaboratory)에서 Selenium 사용하기

프로그래밍/Python 2021. 8. 31. 01:27

안녕하세요 파일입니다. 오늘은 Google Colab에서 Selenium을 사용하는 방법에 대해 포스팅 하겠습니다. 구글 코랩은 Jupyter NoteBook과 비슷한 방식으로 실행되는데 저도 정확하게 아는 것은 아니지만, 서버가 실행되서 그 웹페이지에서 코딩을 하고 거기서 코딩을 하면 서버가 커널을 실행해 코드를 연산합니다. 참고 : https://tobefreein2040.tistory.com/10 3. Jupyter Notebook 안녕하세요. 자꿈두입니다. 오늘 공부할 내용은 Jupyter Notebook입니다. Jupyter Notebook? Anaconda를 설치하게 되면 자동으로 설치되는 응용 프로그램중 하나입니다. Jupyter Notebook을 사용하게 되면요 1. 코 tobefreein..

Article Thumbnail
[Python] 문제 풀이 코드 저장용

프로그래밍/Python 2021. 5. 8. 19:25

#------------------------------------ 2일차 # 연습문제 01 x = int(input("x: ")) y = int(input("y: ")) print("두수의 합:", x+y) print("두수의 차:", x-y) print("두수의 곱:", x*y) print("두수의 평균:", (x+y)/2) print("큰수: ", max(x,y)) print("작은수: ", min(x,y)) # 연습문제 02 r = int(input("r: ")) h = int(input("h: ")) print("원기둥의 부피:", 3.141592 * r**2 * h) # 연습문제 04 import math x1 = int(input("x1: ")) y1 = int(input("y1: ")) x..

[Python] 디시인사이드 갤러리 최신글 이미지 실시간 크롤링

프로그래밍/Python 2021. 5. 8. 18:57

import requests from bs4 import BeautifulSoup import time from os.path import getsize def image_download(BASE_URL): # 헤더 설정 (필요한 대부분의 정보 제공 -> Bot Block 회피) headers = { "Connection" : "keep-alive", "Cache-Control" : "max-age=0", "sec-ch-ua-mobile" : "?0", "DNT" : "1", "Upgrade-Insecure-Requests" : "1", "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Geck..

Article Thumbnail
[Python] LSTM 미래 주가 분석 참고글

프로그래밍/Python 2021. 2. 4. 23:36

www.youtube.com/watch?v=H6du_pfuznE LSTM을 이용해 주식 그래프의 경향성을 학습하고 다음 30일을 예측하는 코드입니다. (일단위 데이터 기준) 보통 인터넷에 LSTM을 이용해 비트코인이나 주식 그래프를 학습하는 코드들은 이전 데이터를 기준으로 하는 predict에 가까웠지만 이건 다음 50개의 경향성을 forecasting 하는 코드입니다. 아래의 영상은 간단하게 LSTM을 이해할 수 있는 참고 영상입니다. www.youtube.com/watch?v=sG_WeGbZ9A4&t=222s

Article Thumbnail
JupyterLab에서 사용자 지정 단축키 Keyboard ShortCuts 설정하기

프로그래밍/Python 2020. 12. 13. 01:58

Jupyter Notebook보다 진보한 Jupyter lab을 쓰면서 조금 불편한 점을 느꼈습니다. 원하는 키보드 단축키가 잘 작동하지 않았다는 점인데요. F2를 눌러서 파일이름을 바꾼다던가.. 현재 파일이름을 바꾼다던가 하는게 잘 안되더라구요. 인터넷에 있는 글들은 죄다 기본 단축키에 대한 정리지 설정하는 방법은 나와있지 않았습니다. 확인해보니 Jupyterlab 에서 따로 설정을 해줘야 하는것이였습니다. Jupyterlab에서 Settings -> Advanced Settings Editor로 이동해 오른쪽 Users Preferences 부분에 뭔가 적혀있으면 공란으로 만들고 아래처럼 Json 형식으로 작성해주시면 됩니다. { "shortcuts": [ { "command": "filebrowse..

Article Thumbnail
네이버 웹툰 다운로더 v3 (Naver_Webtoon_Downloader) / 초고속 다운로드 지원

프로그래밍/Python 2020. 11. 15. 18:53

Python으로 제작된 웹툰 다운로더입니다. 만든진 꽤 됬는데 웹툰들 유료화 소식을 듣고 생각나서 조금 다듬었습니다. 버그가 있어서 수정하고 성인웹툰까지 다운로드 가능하게 패치했습니다. 문제 있을시 자삭하겠습니다. 메일로 질문사항 보내는 분들이 많은데 피드백은 댓글만 받으려고 합니다. 댓글로 문의사항 남겨주세요. 특징 - DOS 형식의 간결한 디자인 - 병렬처리를 통한 초고속 다운로드 지원(인터넷 상태에 따라 다를 수 있음) => 전편 아카이브 용으로 사용시 매우 빠르고 쉽게 받을 수 있습니다. 사용 방법 1. 파일 압축 해제 후 경로의 NWebtoon.exe 를 실행해주세요. 실행이 되었으면 d를 입력해 다운로드 모드로 진입합니다. (정렬에 문제가 발생해서 현재 이미지 합치기 기능은 비활성화 되어있습니..

Article Thumbnail
[Python] 폴더 특수문자 제거 및 HTML 태그 제거 함수

프로그래밍/Python 2020. 11. 13. 20:15

# 경로 금지 문자 제거, HTML문자 제거 def filename_remover(string): cleaner = re.compile('|&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});') #,   등등 제거 string = re.sub(cleaner, '', string) while(string[-1] == '.'): string = string[:-1] #끝에 . 제거 ex) test... -> test non_directory_letter = ['/', ':', '*', '?', '', '|'] #경로 금지 문자열 제거 for str_ in non_directory_letter: if str_ in string: string = string.replace(str_..

Article Thumbnail
[Python] 엑셀파일 인덱스 차례대로 Pandas로 읽어오기

프로그래밍/Python 2020. 8. 27. 19:12

파이썬에서 엑셀 파일을 불러오기 위해 OpenPyxl 를 써봤으나 처리 속도가 너무 느렸습니다. 대안을 찾아보다가 pandas 가 괜찮은 성능을 보여줘서 엑셀파일을 읽는 간단한 예제를 남겨봅니다. pip install pandas 우선 엑셀파일을 읽어오기 위해선 pandas 라이브러리가 필요합니다. 다음 명령어를 입력하여 설치해줍니다. import pandas as pd try: #dtype=str -> 문자열 취급 -> 010 표시 df = pd.read_excel('example.xlsx', sheet_name = 'data', dtype=str) for i in df.index: #엑셀의 인덱스 수만큼 반복한다. name = df.loc[i, '이름'] #현재 인덱스의 이름을 가져온다 phone_n..

Article Thumbnail
[Python] PushBullet으로 SMS 전송하기

프로그래밍/Python 2020. 8. 19. 22:03

Pushbullet API를 이용하면 손쉽게 SMS를 전송할 수 있습니다. 단 사용을 위해서 PushBullet 어플이 스마트폰에 깔려있어야 하고 PushBullet 어플에 신호를 주면 PushBullet 어플이 SMS를 그 스마트폰으로 직접 보내는 방식입니다. 이 PushBullet 어플에 신호를 주는걸 Python을 통해 구현해보겠습니다. PushBullet 사이트에서도 API 사용법을 친절하게 지원하나 더 쉽게 하는 방법은 Python에 PushBullet 라이브러리를 이용하는 방법입니다. pip install pushbullet.py 다음 명령어를 통해 PushBullet 라이브러리를 설치합니다. 사용방법은 이곳에 자세히 설명되어 있습니다. 당연히 여러가지가 가능하나 이 글에선 SMS 전송방법만을..

Article Thumbnail
[Python] Blynklib 로컬 서버 연결하기

프로그래밍/Python 2020. 3. 15. 19:20

import blynklib # initialize Blynk blynk = blynklib.Blynk(BLYNK_AUTH, server='YOUR_IP_HERE', # set server address port=8080, # set server port heartbeat=30, # set heartbeat to 30 secs #log=print # use print function for debug logging ) BlynkLib으로 Blynk 로컬 서버를 연결할땐 다음과 같은 방법을 사용합니다. 기존 선언 blynk = blynklib.Blynk(AUTH_TOKEN) 을 위와 같은 형태로 바꿔주어야 합니다. AuthToken을 제대로 적어줬어도 저것이 제대로 선언되지 않았으면 로컬 서버와 Auth_..

[Python] Mnist 데이터를 이용한 인공신경망 손글씨 인식

프로그래밍/Python 2020. 1. 16. 19:33

import numpy as np #행렬사용 import matplotlib.pyplot import scipy.special %matplotlib inline #AI Class class neuralNetWork: #신경망 초기화 def __init__(self, input_nodes, hidden_nodes, output_nodes, learning_rate): # 입력, 은닉, 출력 게층의 노드 개수 설정 self.inodes = input_nodes self.hnodes = hidden_nodes self.onodes = output_nodes #학습률 self.lr = learning_rate #가중치 행렬 생성 (랜덤값 -0.5 ~ +0.5) self.wih = (np.random.rand(s..

Article Thumbnail