RuntimeExcepton을 상속받은 추상클래서 AbstractBaseException을 만들고 그걸 또 상속받은 BaseException을 만드셨는데... 굳이 두번을 하지 않고 추상클래스 없이 BaseException에서 RuntimeExceptoin을 상속받고 이전에 만들었던 추상클래스 내용을 BaseException에 만들어서 사용하는거랑 무슨차이가 있나요? 왜 중간에 굳이 AbstractBaseException을 한번더 만든건지 이해가 안가네요??
안녕하세요 교수님! 강의 너무 잘 듣고 있습니다. Ex 4.17(14분 쯤)에서 질문이 있습니다. 강의 상 P1(자식1), P3(자식1의 자식 - 자식2)는 if 안에서 각각 unique 쓰레드를 생성해서 총 2개의 쓰레드가 생성되는 것까지는 이해가 됩니다. 마지막 fork를 통해 P1(자식1)과 P3(자식2)가 복제가 되는데, 이 과정에서 if내에서 추가된 쓰레드들은 복제가 되지 않나요? fork는 오로지 프로세스만 복제를 하게 되는건지 문의드립니다!
내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)
마지막 수업까지 잘 들었습니다. 이것을 어떻게 활용할지는 제 역량인것 같네요. 제목과 같이 json 형식으로 데이터는 가져올 수 있는데 select로 찾을려고 하면 찾을 수 없습니다. iframe 구조인것 같은데 주소를 어떻게 찾아야 할 지 모르겠습니다. 제가 가져올려고 하는 데이터는 다음과 같습니다. '다방'이라는 부동산 정보 사이트고요 이중 특정 '공인중개사' url로 들어갑니다. https://www.dabangapp.com/room/6098cb714ea1405f11888d94 이중 room 뒤에 있는 6998~~~이 중개사 고유번호 입니다. 이 사이트에서 특정 방의 데이터를 가져올려고 하면 직접을 가져올 수 없고 개발자도구, 네트워크에서 request url을 통하여 json으로 받아올 수는 있습니다. 그런데 res.text 문구를 살펴보면 찾고자 하는 단어 들은 있는것 같은데 soup.select('div') 이런 명령어를 실행하면 빈 리스트만 나옵니다. 어떻게 하면 select로 찾을 수 있을까요? 참고로 첨부 아래는 제가 구현한 코드입니다. agent = { '좋은방다나와' : '5c7618ea1ffadb68b5da64e3', '스마트' : '586f674024a93357d00dbcbd', '조은' : '56a194f7ef02fd5dad87063f', '런' : '581976532553ed2bee2d785e' } for item in agent.items(): id_list = [] for page in range(1,10): url = 'https://www.dabangapp.com/api/3/room/list/agent?api_version=3.0.1&call_type=web&id={}&page={}&version=1'.format(item[1], page) res = requests.get(url) data_dict = res.json() for data in data_dict['rooms']: if len(data_dict['rooms']) == 0: break else: each_id = data['id'] id_list.append(each_id) time.sleep(1) columns = ['유형', '전월세', '보증금', '월세', '면적', '관리비', '확정일', '층', '전체층', '방수', '욕실수', '난방', '빌트인', '주차수', '승강기', '애완동물', '발코니', '입주가능일', '타이틀', '메모', '주소'] total_room_inform_list = [] for id in id_list: url1 = 'https://www.dabangapp.com/api/3/room/detail2?api_version=3.0.1&call_type=web&room_id={}&version=1'.format(id) res1 = requests.get(url1) room_inform = res1.json()['room'] room_inform_list = [] room_inform_list.append(room_inform['room_type_str']) if room_inform['price_info'][0][2] == 0: room_inform['price_info'][0][2] = '월세' elif room_inform['price_info'][0][2] == 1: room_inform['price_info'][0][2] = '전세' room_inform_list.append(room_inform['price_info'][0][2]) room_inform_list.append(room_inform['price_info'][0][0]) room_inform_list.append(room_inform['price_info'][0][1]) room_inform_list.append(room_inform['room_size']) room_inform_list.append(room_inform['maintenance_cost_str']) room_inform_list.append(room_inform['confirm_date_str']) room_inform_list.append(room_inform['room_floor_str']) room_inform_list.append(room_inform['building_floor_str']) room_inform_list.append(room_inform['beds_num']) room_inform_list.append(room_inform['bath_num']) room_inform_list.append(room_inform['heating']) room_inform_list.append(room_inform['built_in_str']) room_inform_list.append(room_inform['parking_num']) room_inform_list.append(room_inform['elevator_str']) room_inform_list.append(room_inform['animal_str']) room_inform_list.append(room_inform['balcony_str']) room_inform_list.append(room_inform['moving_date']) room_inform_list.append(room_inform['title']) room_inform_list.append(room_inform['memo'].replace('\n', ' ').replace(',', ' ')) room_inform_list.append(room_inform['full_jibun_address2_str']) total_room_inform_list.append(room_inform_list) time.sleep(1) df = pd.DataFrame(total_room_inform_list, columns=columns) df = df.set_index('주소') filename = item[0] + '_' + time.strftime('%Y%m%d') + '.xlsx' df.to_excel(filename) time.sleep(1) /www.dabangapp.com/api/3/room/detail2?api_version=3.0.1&call_type=web&room_id=6098cb714ea1405f11888d94&version=1 https://www.dabangapp.com/api/3/room/detail2?api_version=3.0.1&call_type=web&room_id=6098cb714ea1405f11888d94&version=1 https://www.dabangapp.com/api/3/room/detail2?api_version=3.0.1&call_type=web&room_id=6098cb714ea1405f11888d94&version=1 https://www.dabangapp.com/api/3/room/detail2?api_version=3.0.1&call_type=web&room_id=6098cb714ea1405f11888d94&version=1
안녕하세요. 커뮤니티에 질문을 위해서 이렇게 글남겼습니다. 현재 NFT 토큰 강좌 듣고 있는 수강생입니다. 아무래도 수업이 만들어진지 시간이 좀 되다보니까 사용이 불가해지는 모듈이 생겨 강좌진행에 어려움을 겪고 있습니다. 코드 내 fs 모듈을 사용하고 있는데 fs.promises 모듈로 대체 중이나 조금 어려움이 있어서 도움을 부탁드리려고 합니다. NFT 에서 저와 같은 문제가 있으셨던 분들 어떻게 해결하셨는지요? 해결방법을 알고 계시다면 부탁드리겠습니다.
풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
안녕하세요. 항상 좋은 강의 감사드립니다. 'flask 백엔드 서버와 gunicorn 설정하기1' 강의 중 7분 20초에서 'wsgi-py' 코드 설명 중 궁금한게 있어 질문드립니다. 'FROM app import server ' 가 잘 이해가 가지 않아서 질문드립니다. app.py 와 wsgi.py 는 동일 경로에 있는데 동일 경로에 있는 파일을 참조할 때에는 from . import app 이나 import app 을 사용하는 것으로 알고 있습니다. 실행에는 문제가 없습니다. wisgy.py 파일에서 'FROM app import server' 의 의미는 동일 경로 상의 app 폴더 있는 server.py 를 참조하는 의미가 아닌가요,,,? 강의와 별도로 동일 경로에 db 폴더를 만들고 내부에 mydb.py 를 만들었는데, app.py 에서 'from db import mydb' 를 실행하니 문제가 생겨서.. 질문드립니다. 감사합니다. ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 앗.. 해결하였습니다. 도커 파일에서 파이썬 경로를 환경변수로 넣어주니깐 됩니다. 혹시나해서 첨부합니다
- 선생님의 강의는 모두 듣고 있습니다. 벌써 다음 강의도 기대하고 있는 중입니다. ㅎㅎㅎ - 제가 궁금한 것은 제목에도 썼지만 pd.concat(result.tolist())로 result에 있는 값들을 리스트로 변환한 뒤, 다시 concat로 DF형태로 전환하는 이유가 궁금합니다. (그러니까 제말은 어떻게 result결과를 보고 아 이렇게 리스트로 바꾸고 concat 해주면 되겠구나라는 그런 감이 전혀 오지 않는 초보들은 어떻게 해야하나라는 말입니다.) - 그리고 여기 result는 함수를 이용해서 모은 자료들인데, 얘네들은 Series도 아니고, DF도 아닌 이런 애들은 실제 현실에서 어떨경우에 생기게 되는 건지 궁금합니다.(함수를 이용해 자료를 취합하면 그냥 이렇게 되는건지요?) - 실제 현장에서 데이타를 핸들링할 때, 위와 같이 뭔가를 데이타 프레임으로 만들고 싶은데 잘 안되었던 경우가 많았고, 그때마다 검색하고 뭐하고 해봤지만 답을 찾기가 너무 어려웠던 기억이 있어서 여쭤봅니다. - 혹시 위와같이 우리가 흔히 알고 있는 자료형인 Series나 DF 외에 다른 자료형태를 DF로 변환하는 방법에 대해 간략히 정리해 주실 수 있으실지 정중하게 부탁드려봅니다. - 대한민국 데이타분석 최고전문가이신 박조은 선생님 응원합니다.. ^^
이런 정보들을 한눈에 볼 수 있는 사이트가 별도 있는건지 아니면 강사분께서 일일이 항상 체크를 하시면서 수집하여 알려주신건지 궁금합니다. 이번 강의는 이전 강의들과 다르게 취업과 연계되는 것들을 배운거같아 정말 좋았는데 이런 정보들을 저도 쉽게 찾아볼 수 있게되면 좋을거 같습니다.
강의를 한번 쭉 봤는데 무슨 문제인지 이해가 안가네요... 입력 문자열을 알파벳으로 바꿀 수 있는 유형의 개수를 구하는건지, 1개씩 떼서 알파벳으로 바꾸는 걸 구하는건지, 1의 자리 몇개 10의 자리 몇개를 구하는건지, 각 인덱스를 마지막으로 해서 만들 수 있는 알파벳의 수를 구하는건지 모르겠네여.. 이전 문제들은 어떤 문제인지 감으로 알 수 있었는데, 이 문제는 잘 모르겠네요