파이썬47 BeautifulSoup을 이용한 정적 크롤링 개념 정리 및 실습 해당 글에서는 BeautifulSoup을 사용해서 정적 크롤링을 하는 방법에 대해서 알아본다. 크롤링 실습을 하기 전에 기본적인 웹 동작 원리에 대해서 알아야 하기 때문에 이론 적인 부분 먼저 설명한다. 대표적인 get과 post 방식 크롤링을 실습한다. 웹 동작 원리크롤링은 웹사이트의 정보를 수집하는 과정이다. 따라서 웹이 어떻게 동작하는지 이해할 필요가 있다. 클라이언트란 데스크톱이나 휴대폰과 같은 장치이다. 혹은 크롬이나 파이어폭스와 같은 소프트웨어를 의미한다. 서버는 웹사이트와 앱을 저장하는 컴퓨터를 의미한다. 클라이언트가 특정 정보를 요구하는 과정을 요청(Request)이라고 하며, 서버가 해당 정보를 제공하는 과정을 응답(Response)이라고 한다. 클라이언트와 서버가 연결되어있지 않다.. 2024. 3. 15. 퍼스트파티 DB → 파이썬 → 구글 시트 → 슬랙 연결 자동화 방법 이 글에서는 퍼스트파티 DB, 즉 회사 내부 데이터를 SQL로 추출해서 구글 시트에 적재하고, 슬랙에 자동으로 시트의 데이터를 전송하는 과정을 알아볼 것입니다. 이 과정을 파이썬과 Apps Script를 활용하여 전부 자동화시키는 것이 목적입니다. 목차1. 퍼스트파티 DB, 파이썬 연결2. 파이썬, 구글 시트 연결3. 구글 시트, 슬랙 연결4. 파이썬 자동 실행 방법 1. 퍼스트파티 DB, 파이썬 연결 이 부분은 이전에 포스팅했던 적이 있다. 참고하도록 하자. 파이썬에서 MySQL 쿼리로 DB 데이터 끌어오는 방법파이썬과 MySQL을 연동하여 DB 데이터를 끌어오는 방법에 대해서 간단하게 알아보겠습니다. 꼭 필요한 코드만 담았습니다. 또한, 끌어온 데이터로 시각화하는 방법까지 공유드리겠습니다 :) 파.. 2024. 2. 3. 파이썬에서 MySQL 쿼리로 DB 데이터 끌어오는 방법 파이썬과 MySQL을 연동하여 DB 데이터를 끌어오는 방법에 대해서 간단하게 알아보겠습니다. 꼭 필요한 코드만 담았습니다. 또한, 끌어온 데이터로 시각화하는 방법까지 공유드리겠습니다 :) 파이썬에 MySQL 연동하는 전체 코드import pymysqlplt.rcParams['font.family'] = 'Malgun Gothic'conn = pymysql.connect(host='localhost', user='root', password='0000', db='main_db', charset='utf8')cursor = conn.cursor()sql = """select * from user limit 5"""cursor.excute(sql)data = cursor.fetchall()conn.clos.. 2023. 12. 17. 파이썬 웹 크롤링 환경세팅(VScode, miniconda, selenium) 및 예시코드 이 글에서는 크롤링을 위한 VScode, miniconda 환경 세팅부터 Selenium, ChromDriver 자동관리 라이브러리 설치 방법까지 알아볼 것이다. 또한, 실습이 가능하도록 실제로 구글 스토어 댓글을 크롤링하는 코드를 제공한다. 파이썬 코딩을 할 때, 흔히 사용하는 Colab은 크롤링이 실제로 동작하는지 볼 수 없다. 반면 VScode에서는 이를 확인할 수 있다.다만 VScode에서는 .ipynb파일을 실행하려면 파이썬 에디터인 Jupyter Notebook이 필요하다. miniconda는 Jupyter Notebook과 파이썬에서 필요한 최소한의 라이브버리들, 그리고 가상환경을 관리할 수 있게 만들어진 툴이다. 따라서 환경세팅을 위해 VScode와 miniconda를 먼저 다운로드 받.. 2023. 12. 10. Seaborn 막대 그래프 7가지 종류 그리는 방법 (vs Matplotlib) 이 글에서는 Python의 Seaborn 라이브러리를 사용하여 다양한 막대 그래프를 그리는 방법을 설명하겠습니다. 기본 막대 그래프부터 수평 막대, 그룹별, 에러바, 누적 및 100% 누적 바 그래프까지 다룹니다. 각 예시에는 코드가 포함되어 있고, 깃허브에 full 코드를 업로드해두었습니다. 저번 시간에는 Matplotlib 라이브러리를 활용해서 아래 목차에 해당하는 그래프를 그리는 방법에 대해서 다루었습니다. Seaborn 같은 경우엔 대부분 Matplotlib보다 훨씬 간단하게 그래프를 표현할 수 있기 때문에 Seaborn 라이브러리도 충분히 익혀두는 것을 추천드립니다. 목차1. Seaborn 기본 막대 그래프 그리기2. 수평 막대 그래프 그리기3. 다중 그룹 데이터 비교하기4. 다중 그룹 하나의 .. 2023. 10. 27. Matplotlib 막대 그래프 그리는 7가지 방법(errorbar, 100% 누적 바 등) 이 글에서는 Python의 Matplotlib 라이브러리를 사용하여 다양한 막대 그래프를 그리는 방법을 상세하게 설명합니다. 기본 막대 그래프부터 수평 막대, 그룹별 그래프, 에러바, 누적 및 100% 누적 바 차트까지 다룹니다. 각 예시에는 필요한 속성과 코드 설명이 포함되어 있습니다. 목차1. Matplotlib 기본 막대 그래프 그리기2. 수평 막대 그래프 그리기3. 여러 그룹 데이터 비교하기4. 여러 그룹 하나의 그래프에 담기5. errorbar 그리기(평균, 표준편차)6. 누적 바 차트 그리기7. 100% 누적 바 차트 그리기8. 속성 요약 1. Matplotlib 기본 막대 그래프 그리기먼저 가장 기본적인 Matplotlib 라이브러리의 막대 그래프를 그릴 건데요. plt.bar() 함수를.. 2023. 10. 16. Matplotlib Subplot 활용해서 그래프 여러개 그리는 3가지 방법 Python에서 데이터 시각화를 할 때, 여러 그래프를 하나의 화면에 표시하고 싶다면 'Subplot'이 해결책입니다. 이 글에서는 Python의 대표적인 시각화 라이브러리인 Matplotlib, Seaborn, Plotly를 사용하여 Subplot을 그리는 방법에 대해 알아보겠습니다. 목차Subplot 그리는 방법1. plt.subplot(O행, O열, O번째)2. fig, ax = plt.subplot(O행, O열)3. Gridspec라이브러리별 Subplot 적용 방법1. matplotlib2. seaborn3. plotly Subplot 그리는 방법subplot을 그리는 대표적인 3가지 방법을 소개합니다. 이 3가지 방법은 matplotlib와 seaborn을 활용하여 그린 그래프에 적용할 수.. 2023. 10. 12. plt.legend 옵션으로 그래프 범례 모양 커스터마이즈하기 이 글은 plt.legend 함수를 통해 그래프 범례 모양을 내 마음대로 커스터마이즈하고 싶은 분들을 위한 글입니다. 이를 위한 label, loc, ncol, fontsize, frameon, shadow 총 6가지의 옵션과 기타 옵션들에 대해서 예시와 함께 설명하며, 실습합니다. plt.legend는 그래프의 범례를 표기할 때 사용하는 함수입니다. 다음과 같이 matplotilb 라이브러리를 불러오면 사용이 가능하죠. import matplotlib.pyplot as plt plt.legend 함수에는 다양한 옵션들이 있는데, 이 옵션들을 사용하면 범례의 위치, 스타일, 크기 등을 커스터마이즈 할 수 있습니다. 주요 옵션에는 다음과 같은 것들이 있습니다. 목차labellocncolfontsizef.. 2023. 10. 10. [프로그래머스 SQL] 자동차 평균 대여 기간 구하기 정답쿼리SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1), 1) AS AVERAGE_DURATIONFROM CAR_RENTAL_COMPANY_RENTAL_HISTORYGROUP BY CAR_IDHAVING AVERAGE_DURATION >= 7ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC 설명날짜 차이를 어떻게 계산해야하는지 알아야 풀 수 있는 문제였다.ROUND(AVG(DATEDIFF(END_DATE, START_DATE)+1), 1)DATEDIFF(시작 날짜, 마지막 날짜)DATDIFF라는 함수에 시작 날짜와 마지막 날짜에 해당하는 Column을 넣어주면, 두 날짜간의 차이를 구할 수 있다. 여기에 +1을 해준 .. 2023. 8. 2. [프로그래머스 SQL] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 정답쿼리SELECT car_id, max(if('2022-10-16' between start_date and end_date, '대여중','대여 가능')) as AVAILABILITYfrom car_rental_company_rental_historygroup by car_idorder by car_id desc; 설명2022-10-16일의 조건을 맞추는게 조금 까다로운 문제였다. 쿼리를 하나하나 쪼개서 살펴보겠다. if('2022-10-16' between start_date and end_date, '대여중', '대여 가능')if (조건문, 참일 때 반환하는 값, 거짓일 때 반환하는 값) '2022-10-16'일이 start_date와 end_date 사이에 있으면, '대여중'을 반환하고, 그 .. 2023. 7. 31. [프로그래머스 SQL] 즐겨찾기가 가장 많은 식당 정보 출력하기 정답코드SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITESFROM rest_infoWHERE (food_type, favorites) IN (SELECT food_type, max(favorites) FROM REST_INFO GROUP BY FOOD_TYPE)ORDER BY food_type desc; 설명아마도 이 글을 클릭 한 사람이라면, 아래와 같이 코드를 짜서 오류가 났을 가능성이 클 것같다. SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES) AS FAVORITESfrom rest_infoGROUP BY F.. 2023. 7. 27. [프로그래머스] 진료순서 정하기 - 파이썬(index함수) 리스트에 담긴 숫자가 큰 순서대로 순위를 리스트 형태로 출력하는 문제이다. 코드 제출하고 보니 가장 많은 표를 받은 코드와 똑같아서 가져왔다. * 이어드림스쿨 3기 참여하면서 진행하고 있는 스터디에서 발표한 내용입니다. (23년 6월 14일 코드리뷰 스터디 발표내용) 기존 코드# Day08 진료순서정하기 self 기존 Code def solution(emergency): # emergency 숫자 하나씩 뽑아서(e) 내림차순 정렬시킨 emergency기준으로 인덱스(e) +1을 출력 return [sorted(emergency, reverse=True).index(e)+1 for e in emergency] 코드 풀이# Day08 진료순서정하기 self 기존 Code 보안/개선한 Code & C.. 2023. 6. 15. 이전 1 2 3 4 다음