본문 바로가기

PYTHON

(16)
[selenium] 네이버 밴드 게시글 댓글 크롤링. 활동하고 있는 밴드에서는 게시글에 댓글로 질문을 받고 이에 대한 답변을 해준다. 꽤 유용한 정보가 많아 자주 들여다보게 되는데 게시판 형태에 익숙한 나는 이전 글 찾기가 너무 어렵다. 태그라는 훌륭한 기능이 있지만 사용 잘 안 하게 되더라. 그래서 이 불편함을 해소하고자 댓글 크롤링하는 것 만들어서 엑셀에 담아버렸다. 프로그램 로직은 매우 간단하다. 1. 셀레니엄으로 게시글에 방문한다. 2. 댓글 부분에 "첫 댓글로" 버튼이 있는지 확인한 후 있으면 클릭해준다. 3. "다음 댓글 보기" 버튼이 있는지 확인 한 후 클릭해 준다. 4. "다음 댓글 보기" 버튼이 안 나올 때 까지 3번을 반복한다. 5. 댓글을 엑셀에 복사한다. 4. 댓글에 대한 답글을 복사한다. 5. 답글이 많은 경우 " x개의 답글 더보기..
[selenium] shadowRoot 접근하는 방법 크롬으로 다운로드 한 파일 정보를 얻기 위해 selenimu으로 분석할 때 #shadow-root를 보게 되었습니다. ​ find_element함수로 shadow-root를 찾으려 했지만 잘 안돼서, 구글에서 검색해 보니, 자바스크립트로 해결하는 방법이 제일 무난해 보였습니다. 크롬 디버거, 콘솔 탭에서 위와 같이 스크립트를 작성했더니 원하는 결과를 얻었습니다. 위 스크립트를 execute_script 함수 인자로 넣어 주면 됩니다. browser.execute_script( """ var manager = document.querySelector('downloads-manager').shadowRoot; var item = manager.querySelector('downloads-item').shad..
[pandas] y축 범위가 다른 두 그래프를 함께 그리기 여러 종류의 데이터를 하나의 그래프에 시각화 하는 경우, y축 스케일이 다른 경우 아래와 같이 그래프가 겹쳐서 보입니다. ​ ​ 이렇게 시각화 해도 별 문제는 없지만, 보기에 안 예쁘잖아요? ​ 이런 경우 twinx라는 것을 사용해서 해결할 수 있습니다. ​ [twinx] matplotlib.axes.Axes.twinx — Matplotlib 3.5.1 documentation The newly created Axes instance matplotlib.org 원리는, twinx를 사용해서 x축을 공유하는 새로운 축을 만든 후 그곳에 두 번째 그래프를 출력하는 겁니다. ​ ax = df_plot_bar.plot.bar(x='구분', title=city, xlabel="", figsize=(20, 10),..
[pandas] 그래프 x축 날짜 간격이 너무 촘촘한 경우. pandas로 데이터 시각화 할 때 데이터가 너무 많은 경우 x축에 출력되는 라벨이 너무 촘촘해지는 경우가 있습니다. 이렇게 몇년치 데이터를 가져와서 그래프를 만들면 x축이 너무 촘촘해 집니다. ​ 이럴때 set_xticks를 사용해서 x축 라벨이 출력되는 간격을 조절할 수 있습니다. https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.set_xticks.html dataframe의 전체 데이터 개수와 numpy의 range 함수를 사용하면 편하게 x축 간격에 사용할 값을 만들 수 있습니다. ​ https://numpy.org/doc/stable/reference/generated/numpy.arange.html ax = df.plot.bar(..
[PySide6] 파이썬 UI 프로그램 시작하기(2) 2022.01.21 - [PYTHON] - [PySide6] 파이썬 UI 프로그램 시작하기(1) 파이썬으로 GUI를 만들기 위한 방법은 크게 2가지가 있는 것 같습니다. ​ 1. 소스코드에서 타이핑, 2. Qt 디자이너 사용. ​ 다른 언어를 사용할 때 보통 디자이너를 사용했기 때문에, 일일이 코드를 타이핑해서 만드는게 너무 낯섭니다. ​ 그래서 Qt 디자이너를 사용해서 간단히 어떤식으로 구성되는지 살펴 보았습니다. ​ 목표는 버튼을 클릭하면 메시지 박스가 출력되는 것입니다. Qt 디자이너를 실행하고 버튼을 추가한 후 test.ui로 저장합니다. 그리고 test.ui를 어떻게 사용할지 선택을 해야합니다. ​ 1. test.ui를 파이썬 코드로 변환한 후 사용. 2. test.ui를 그대로 사용. ​ 1번..
[PySide6] 파이썬 UI 프로그램 시작하기(1) selenium으로 무언가 만들다 보니 GUI가 필요해졌습니다. 그러고 보니 파이썬은 콘솔에서만 공부해 보고 UI를 만들어 본적이 없네요? GUI는 어떻게 만드나 구글에 물어보니, 여러가지 라이브러리를 알려줍니다. 그 중에서 qt를 한 번 사용해 보려고 합니다. ​ 무엇이든지 처음 시작은 필요한 프로그램 설치부터! 1. PySide6 설치 pip install qtside6 2. 설치확인을 위해 디자이너를 실행해 봅니다. C:\>pyside6-designer.exe 다음과 같이 실행되면 일단 성공.
[pandas] 그래프에 한글 출력 안 될 때. pandas로 그래프에 한글이 출력안되는 경우, 폰트를 설정하면 됩니다. import matplotlib from IPython.display import set_matplotlib_formats matplotlib.rc('font', family='NanumGothic') matplotlib.rc('axes', unicode_minus=False) set_matplotlib_formats('retina') 폰트이름은 영어로 입력해야합니다. 한글로 입력하니 안 되더군요. 마이너스가 출력안되는 경우 사용하는 코드와 해상도를 높이는 코드를 추가했습니다.
python으로 파일 다운 받기. 파이썬 requests 모듈과 파일의 url만 있으면 간단하게 파일을 다운로드할 수 있습니다. 1. requests 모듈 설치. pip로 requests 모듈을 설치합니다. pip install requests 2. get 함수로 파일 받기. get 함수를 사용해서 다음과 같이 파일을 다운받을 수 있습니다. import requests import re from urllib.parse import unquote response = requests.get('파일 위치') file_name = re.findall("filename=(.+)", response.headers.get("content-disposition")) real_file_name = unquote(file_name[0]).replace('..