소개
잔재미코딩, Dave Lee
주요 경력: 쿠팡 수석 개발 매니저/Principle Product Manager, 삼성전자 개발 매니저 (경력 약 15년)
학력: 고려대 일어일문 / 연세대 컴퓨터공학 석사 (완전 짬뽕)
주요 개발 이력: 삼성페이, 이커머스 검색 서비스, RTOS 컴파일러, Linux Kernel Patch for NAS
저서: 리눅스 커널 프로그래밍, 리눅스 운영 체제의 이해와 개발, 누구나 쓱 읽고 싹 이해하는 IT 핵심 기술, 왕초보를 위한 파이썬 프로그래밍 입문서
풀스택/데이터과학 관련 무료 자료를 공유하는 사이트입니다.
IT 학습에 도움이 되는 팁/ 짧은 무료 강의를 공유하고자, 조금씩 시작하고 있습니다~
최신 현업과 IT 강의를 병행하며, 8년째 꾸준히 견고한 풀스택과 데이터과학 강의를 만들고 있습니다.
강의
전체11로드맵
전체2수강평
게시글
질문&답변
2024.09.11
주피터 노트북 결과가 안나옵니다.
안녕하세요. 답변 도우미입니다. 사이트 주소가 영상과 달라서, 해당 페이지에 해당 태그가 없기 때문에, 아무것도 출력이 안된 것으로 이해가 됩니다. 영상에서는 다음 페이지로 설명을 드리고 있습니다. https://davelee-fun.github.io/blog/crawl_test_css.html 참고로, 일반적으로 작성된 코드에서 실행은 되었으나 결과가 출력되지 않는 이유는 여러 가지가 있을 수 있습니다. 몇 가지 참고할만한 점검해야 할 부분을 알려드리겠습니다. ### 1. URL 확인 우선 requests.get() 으로 가져온 URL이 정확하게 동작하는지 확인해보세요. 웹페이지가 응답하지 않거나 접근할 수 없는 경우, 빈 데이터를 반환할 수 있습니다. ```python print(res.status_code) # 응답 상태 확인 print(res.text) # 페이지 내용 확인 ``` 위 코드를 추가해서 웹페이지가 제대로 로드되는지 먼저 확인해보세요. 상태 코드가 200이어야 정상적으로 접근이 된 것이고, res.text 로 가져온 내용이 빈 값이 아닌지 확인해보세요. ### 2. CSS 선택자 확인 CSS 선택자가 정확하지 않으면 원하는 데이터를 찾을 수 없습니다. 선택자가 제대로 작동하는지 확인하기 위해 선택된 항목이 있는지 먼저 확인하세요. ```python print(len(items)) # 선택된 요소의 개수 출력 ``` 만약 len(items) 가 0이면 CSS 선택자가 잘못되었을 가능성이 있습니다. 웹 페이지 구조가 변경되었을 수 있으니, 페이지의 HTML 구조를 다시 확인하고 적절한 선택자를 사용해야 합니다. 예를 들어 ul#dev_course_list>li.course.paid 가 맞는지 다시 한 번 확인하세요. 선택자가 잘못된 경우 페이지의 HTML 요소를 브라우저 개발자 도구에서 다시 찾아보시고, 올바른 선택자를 지정해 주세요. ### 3. BeautifulSoup 파서 옵션 현재 "html.parser" 를 사용하고 있는데, 파서 옵션에 문제가 있을 가능성도 있습니다. lxml 파서를 사용하는 것도 하나의 방법입니다. 먼저 lxml 이 설치되어 있는지 확인하고 아래와 같이 수정해보세요. ```python soup = BeautifulSoup(res.content, "lxml") ``` ### 4. 네트워크 문제 또는 웹사이트 차단 일부 웹사이트는 크롤링을 방지하기 위해 요청을 차단하기도 합니다. 이를 피하려면 headers 를 추가해 사람의 브라우저에서 요청한 것처럼 요청을 위장할 수 있습니다. ```python headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} res = requests.get("https://davelee-fun.github.io/blog/crawl_test", headers=headers) ``` ### 최종 코드 예시 ```python from bs4 import BeautifulSoup import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} res = requests.get("https://davelee-fun.github.io/blog/crawl_test", headers=headers) if res.status_code == 200: soup = BeautifulSoup(res.content, "html.parser") items = soup.select("ul#dev_course_list>li.course.paid") if items: for item in items: print(item.get_text()) else: print("선택된 항목이 없습니다.") else: print("웹 페이지를 불러오지 못했습니다.", res.status_code) ``` 위 코드로 실행해보고 결과가 나오는지 확인해보세요. 감사합니다. 잔재미코딩 드림
- 0
- 1
- 24
질문&답변
2024.09.11
집합 set 값 출력 순서
안녕하세요. 답변 도우미입니다. 파이썬의 set (집합)은 순서가 없는 자료형입니다. 그래서 set 에 값을 넣을 때 넣은 순서대로 출력되지 않고, 무작위로 출력되는 것처럼 보일 수 있습니다. 예를 들어, 아래 코드를 보면: ```python data_set = {'apple', 'dell', 'samsung', 'lg'} if 'apple' in data_set: print(data_set) ``` 이 코드를 실행하면 {'lg', 'apple', 'samsung', 'dell'} 처럼 순서가 뒤섞여 출력됩니다. 그 이유는 set 이 값들의 순서 를 기억하지 않기 때문입니다. set 은 값이 존재하는지 여부만 중요하게 다룹니다. 만약 값을 넣은 순서대로 출력하고 싶다면, list (리스트)를 사용할 수 있습니다: ```python data_list = ['apple', 'dell', 'samsung', 'lg'] if 'apple' in data_list: print(data_list) ``` 리스트는 순서를 기억하기 때문에, 입력한 순서대로 출력됩니다. 감사합니다. 잔재미코딩 드림
- 0
- 2
- 22
질문&답변
2024.09.07
(맥환경) workbench 이용할 때 패스워드 입력 안해도 자동으로 활성화 가능해져요..
안녕하세요. 답변 도우미입니다. MySQL Workbench에서 접속시 패스워드를 한번만 저장해놓으면, 패스워드 입력없이 사용할 수 있는 기능을 적용하신 것 같아요. 이를 다시 되돌리려면 접속한 정보를 아예 삭제하시고 새로 접속정보를 만드시는 것도 좋고요. 이외에 다음 부분 참고해보셔도 좋을 것 같습니다. 해결 방법 : 1. MySQL Workbench에서 저장된 비밀번호 삭제 : - MySQL Workbench에서는 접속 정보를 저장하는 기능이 있습니다. 이 기능이 활성화되어 있으면 이후 로그인할 때 패스워드를 묻지 않고 바로 접속이 가능합니다. - 이를 해결하려면 저장된 자격 증명을 삭제하거나 재설정하면 됩니다: 1. MySQL Workbench를 실행하세요. 2. 상단 메뉴에서 MySQL Connections 를 선택하고, 본인이 사용 중인 연결을 마우스 오른쪽 클릭하여 Edit Connection 을 선택합니다. 3. Store in Keychain 으로 설정된 부분을 찾고, 이 설정을 비활성화하거나 삭제하세요. 4. 자격 증명 삭제 후에는 다시 연결할 때마다 패스워드를 물어보게 될 것입니다. 2. MySQL Workbench 연결을 재설정 : - 새로운 연결을 만들 때, 자격 증명 저장 여부를 묻는 옵션이 나타납니다. 이때 "Don't save password"를 선택하여 자격 증명이 저장되지 않도록 설정할 수 있습니다. 감사합니다. 잔재미코딩 드림
- 0
- 1
- 18
질문&답변
2024.09.07
db.movies.aggregate() 질문
안녕하세요. 답변 도우미입니다. 현재 MongoDB Studio 3T에서 db.movies.aggregate([{$match: {year: 1995}}]) 명령어를 실행했을 때, 아무런 데이터가 반환되지 않는 문제를 겪고 계신 것 같습니다. 화면을 보면 에러 메시지는 없으나 결과가 비어 있는 것으로 보입니다. 1. movies 컬렉션에 데이터가 없을 가능성 : - 스크린샷을 보면 movies 컬렉션에 데이터가 없거나 0건일 가능성이 매우 높습니다. - 왼쪽 패널에서 sample_mflix 데이터베이스 아래 movies 컬렉션을 선택한 후, 상단 메뉴의 "Count Documents" 버튼을 눌러 전체 데이터 개수를 확인해보세요. - "0 documents" 로 표시된다면 실제로 데이터가 없는 상태입니다. 2. 데이터 정상 확인 후에도 동작하지 않는 경우 : - 데이터가 제대로 들어와 있음에도 해당 명령어가 작동하지 않는다면, 데이터의 구조가 맞는지 확인해야 합니다. 예를 들어, year 필드가 정확히 1995 로 되어 있는지 확인해보세요. 필드 이름이 잘못되었거나, 데이터가 다른 형식(예: 문자열)으로 저장된 경우에도 문제가 발생할 수 있습니다. - Studio 3T에서 데이터를 한두 개 확인하여 필드 이름과 형식을 정확히 확인해보세요. 가장 큰 가능성은 movies 컬렉션에 데이터가 없다는 점입니다. 데이터를 제대로 가져오지 못한 것이 문제일 수 있으니, 강의에서 제공된 데이터 파일이 제대로 import되었는지 확인하고, 필요하다면 다시 데이터를 불러오는 작업을 시도해 보시기 바랍니다. 참고로 영상처럼 다시한번 해당 데이터 셋업해보았는데요. 아래와 같이 정상적으로 데이터가 들어 있음을 확인했습니다. (사진) 감사합니다. 잔재미코딩 드림
- 0
- 1
- 17
질문&답변
2024.09.05
아나콘다 설치가 어려운데 아나콘다가 꼭 필요 할까요 ?
안녕하세요. 답변 도우미입니다. 아나콘다는 입문자분들(50대 문과 여교수님)도 영상을 보시면서, 크게 무리 없이 설치하고, 사용하셔서, 어려운 설치는 아닙니다. IT 관련 프로그램 설치도 어떻게 보면 IT 환경에 적응하고, 역량을 키워가는 일이기도 하고요. 과정 내에서 몽고 DB 사용법 및 몽고 DB 를 파이썬으로까지 다루는 방법을 익히는 것이라서, 아나콘다 및 주피터 노트북은 필요합니다. 자료도 내용 및 테스트까지 할 수 있도록 주피터 노트북용 파일로 드리거든요. 테스트 하지 않고, 영상만 보시면서, 가볍게 중간에 나오는 몽고DB 툴만 사용하셔서 보시는 것도 크게 무리는 없을 수 있습니다. 감사합니다.
- 0
- 1
- 35