파이썬

파이썬 출력+로깅 같이하기 (파워쉘 Tee-Object)
파이썬에서 콘솔창에 출력도 하면서 로그 파일에도 저장되길 바랬다. 여러 방법을 써보았지만 만족할만한게 없었는데 다행히 찾게되었다. tee 도 되고 Tee-Object도 되는 것 같다. 파워쉘은 처음이라 많이 해맸는데 결국 공식문서가 짱이다.. Tee-Object 명령 출력을 파일 또는 변수에 저장하고 콘솔에 표시합니다. 구문 Tee-Object [-FilePath] [-InputObject ] [ ] Tee-Object -Variable [-InputObject ] [ ] 설명 Tee-Object cmdlet은 명령의 출력을 문자 "T"처럼 두 방향으로 forsenergy.com 내가 쓴 방법은 다음과 같다. 먼저 cd로 경로를 지정한 뒤 날짜를 불러와 저장하게 했다. $year 같은 경우는 숫자이기 때..
[파이썬] 요일 정렬하기 (무식하게)
무식한버전.. a = ['매일 10:00~21:00'] b = ['금 10:30~20:00', '토 10:30~20:30', '일 10:30~20:30', '월 10:30~20:00', '화 10:30~20:00', '수 10:30~20:00', '목 10:30~20:00'] # print(len(b)) def weeks_sort(b): bc = [] if len(b) > 3 : for i in range(len(b)): if '월' in b[i]: bc.append(b[i]) for i in range(len(b)): if '화' in b[i]: bc.append(b[i]) for i in range(len(b)): if '수' in b[i]: bc.append(b[i]) for i in range(l..
![파이썬 requests 이미지 다운로드 에러 처리[403,permission]](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboVhy8%2FbtrMDoAWzvu%2Fxd6hKASbYNKRqkLQ5kEfy0%2Fimg.png)
파이썬 requests 이미지 다운로드 에러 처리[403,permission]
작업 특성상 디렉토리 몇 개를 거치는 경로를 설정해야 했다. 첫 번째로 시도한 건 curl인데, 이건 경로 지정하는 방식을 못 찾겠어서 포기했다. 두 번째는 request를 활용한 urlretrieve 방식인데, 인터넷 예시를 참조했다. import requests url = "https://dispatch.cdnser.be/cms-content/uploads/2020/04/09/a26f4b7b-9769-49dd-aed3-b7067fbc5a8c.jpg" urllib.request.urlretrieve(url, "test.jpg") urllib.error.HTTPError: HTTP Error 403: Forbidden 이런 에러가 발생하였다. 전형적 크롤링 에러로, 헤더를 추가해줘야 하는데, 이 상태로는..

파이썬 작업스케줄러 할 때 주의점(셀레니움/schedule모듈)
셀레니움으로 짠 파이썬 코드를 작업스케줄러로 돌리니 자꾸 에러가 났다. cmd로 돌리기 때문에 그런 것 같다. 솔직히 아 그런가 하고 headless 해보니 잘 됐다. 개꿀 options = webdriver.ChromeOptions() options.add_argument("headless") driver = webdriver.Chrome('C:\chromedriver99.exe', options=options) headless 옵션을 넣어주면 창을 안켜기 때문에 cmd에서도 잘 돌아간다. 끝! 인줄알았는데 autoit이랑 이것저것 쓰려다보니 headless로는 안됐고, 작업스케줄러는 무조건 백그라운드 재생이다보니 계속 에러가나서 미치는줄 알았다. 별의 별 방법을 다 했지만 결국 안됐다. ..

textarea 내용 크롤링 잘 안될 때
셀레니움으로 크롤링 할 때 textarea 내용이 안따져서 찾아보니 js로 value 값을 받아와야한다. 이렇게 있다고 치면 보통은 xpath로 받아서 해야하는데 클릭이 안된다. driver.find_element_by_xpath('//*[@id="content"]').click() 개발자도구에서 해보니 value값으로 선택되길래 이렇게 해결! driver.execute_script("document.getElementsByTagName('textarea')[0].value=\'" + 변수명 + "\'") 또는 driver.execute_script("document.getElementsById('content').value=\'" + 변수명 + "\'")
셀레니움 스크롤 끝까지 내리기
#셀레니움 스크롤 끝까지 내려도 계속 내리는 페이지라면 prev_height = browser.excute_script("return document. body.scrollHeight") import time while True: #첫번째로 스크롤 내리기 browser.excute_script("window.scrollTo(0,document.body.scrollHeight)") #시간대기 time.sleep(2) #현재높이 저장 current_height = browser.excute_script("return document. body.scrollHeight") #현재높이와 끝의 높이가 끝이면 탈출 if current_height == prev_height: break #업데이트해줘서 끝낼 수 있도록..

셀레니움 크롤링 값이 안나올 때(text)(frame)
셀레니움에서 크롤링 코드 맞게쳤는데도 값이 안나오면 프레임이 있는지 확인해보고 바꿔줘야함. 셀레니움이 참 멍청한건지 프레임이 다르면 값을 가져오질 못하더라고... 그래서 프레임을 변경해줘야한다. # 메인프레임변경해주기 driver.switch_to.frame('coinfo_cp') 예시) 네이버 금융 재무재표 가져올 때 기존 코드 from bs4 import BeautifulSoup from selenium import webdriver driver = webdriver.Chrome('C:\chromedriver99.exe') url = 'https://finance.naver.com/item/coinfo.naver?code=000660' driver.get(url) # 유보율 xpath ubo = ..