내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)
5.4 영상보면 전일비는 숫자로만되어있네요 영상보면 전일비는 숫자로만되어있네요 제 코드는 아래와 같고 어떻게 상승,하락을 없애는지 모르겠습니다. import requests import bs4 import re import time total_data_list = [] # 추출하고자 하는 데이터 리스트를 모아놓을 곳 page_number = 1 pre_data_time_set = set() # 이전 페이지에서 추출한 데이터를 모아놓는 곳 cuz 중복되면 그만두게 하기 위해 while True: # 특정 조건이 만족하면 break로 루프 끝냄 # 페이지 번호를 포함한 url 생성 - {}.format을 사용해서 동적으로 사용 url2 = "https://finance.naver.com/item/sise_day.naver?code=453450&page={}".format(page_number) # 해당 url로 요청 res2 = requests.get(url=url2, headers=headers2) # 요청한 정보를 .text로 만든 뒤 파싱 soup3 = bs4.BeautifulSoup(res2.text, "lxml") tr_eli = soup3.select("table.type2 > tr[onmouseover='mouseOver(this)']") current_time_set = set() # 현재 페이지의 날짜 데이터를 저장할 set for a in tr_eli: # tr_eli라는 ResultSet에서 하나씩 추출 td_eli = a.select("td") # a.select("td") = 위에서 추출한 것에서 'td' 태그를 포함한 것을 추츨하고 ResultSet으로 반환 # a는 태그지만 td_eli는 ResultSet이다 : data_list = [] # 추출한 데이터를 담을 리스트 for i, td_real2 in enumerate(td_eli): # 추출한 ResultSet(열)들과 인덱스를 같이 순회 clean_data = re.sub(r'\s+', " ", td_real2.text.replace(",","")) # 숫자가 아닌 모든 문자를 제거 if clean_data == " ": break if i == 0: # 첫 번째 인덱스는 무조건 날짜임 current_time_set.add(clean_data) data_list.append(clean_data) if len(data_list) > 0: # data_list가 빈칸이 아닐경우에 total에다가 추가 total_data_list.append(data_list) else: # eliment를 가져오는거 자체를 그만두게 하는 것 break # 이전에 수집한 날짜와 현재 페이지의 날짜가 동일하면 루프 중단 if pre_data_time_set == current_time_set: print("끝났다", page_number) break else: pre_data_time_set = current_time_set # 현재 페이지의 날짜로 업데이트 time.sleep(3) # or random.random() * 2 page_number += 1 # 페이지 번호를 1씩 증가 # 결과 출력 for data in total_data_list: # total_data_list는 리스트 형식이라 리스트안에 리스트를 빼내는 작업하는 것 print(data) # 중복되는 내용 없애는거는 나중에 DataFrame 사용하면 편한데 로직내에서도 가능하긴 하다.
반복문강의 20:40초 for 과 while 반복문 풀이를 할때 for문은 i=5까지 반복한다하셨는데요. 어떻게 출력값이 짝수기준으로 while 출력물이 나오는지 이해가 안갑니다. i=1일때 for문으로 현재숫자:1 출력은 이해가 가구요. 그다음 while로 넘어갔는데 조건식이 false여서 다시 for문으로 돌아오는 것인가요? 왜 돌아가는지 이해가 안가서요. 그다음 2일땐 while 조건식이 True 여서 출력되고break로 빠져나오고 다시 for문으로 돌아가는건가요.
안녕하세요? 어제까지 작동하던 코드가 오늘 위 에러 메시지가 나면서 작동이 되지 않네요. 예외가 발생했습니다. AttributeError module 'win32com.gen_py.7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBCx0x1x0' has no attribute 'CLSIDToClassMap' File " E:\Naver MYBOX\빠른동기화폴더\999_업무용주요매크로\999_한글매크로\01_일상의코딩\002_import win32com.py ", line 3, in <module> hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") # 한글 실행 AttributeError: module 'win32com.gen_py.7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBCx0x1x0' has no attribute 'CLSIDToClassMap' GPT에게 물어 보니 com 이 손상되었다고 하면서 com 캐시 재생성 하거나 캐시를 재설정 및 재실행을 하라고 하는데, 정말 그런건가요? 위 두 코드를 넣어 보았는데, 계속해서 에러메시지가 나네요 TT
안녕하세요 선생님 구글에 graphviz 다운로드 후 pip install을 해야하나 모르고 pip install 먼저하고 구글 다운로드 후 다시 pip install 하니 중복되서 프롬프트에서 graphviz가 중복됬다고 실행이 안됩니다 ㅠㅠ 혹시 해결방법이 있을까요 ?
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
String? onStartTimeValidate(String? val) { if (val == null) return '값을 입력 해주세요.'; if (int.tryParse(val) == null) return '값을 숫자로 입력해주세요.'; final int time = int.parse(val); if (time > 24 || time < 0) return '0~24의 값을 입력해주세요.'; return null; } 강의처럼 코드를 위와 같이 작성했을때 텍스트 필드에 값을 입력하지 않고 저장하면 값이 빈 문자열로 넘어와서 '값을 입력해주세요' 가 아니라 '숫자를 입력해주세요' 라는 에러가 발생합니다. 텍스트 필드의 값이 미입력시 null 이 아니라 빈문자열('')로 넘어오는것 같아서 아래처럼 코드를 수정했는데 맞는걸까요? if (val == null || val == '') return '값을 입력 해주세요.';
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
BottomSheet 디자인 마무리하기에서 categoryColor를 변경할때 typedef를 사용하신 이유가 뭔가요? _Categories( selectedColor: selectedColor, onTap: (String color) { setState(() { selectedColor = color; }); }, ), 위 처럼 넘기고 _Category 클래스에서 일반함수로 받고 아래처럼 실행해줘도 오류 없이 되는 것 같은데 onTap: () { onTap(e); }, typedef로 별도로 정의해서 받는 특별한 이유가 있는지 궁금합니다!
선생님 안녕하세요. 강의 잘 듣고 있습니다. 다름 아니라 미니콘다 프롬프트를 통해 가상환경설정 시 기존 yaml 파일을 통해 환경설정을 덮어쓰기 하는 경우 에러가 발생합니다. (myenv-finance-analysis) C:\Users\baesilisk\env_yaml>conda env create --force -f myenv-finance-analysis.yaml usage: conda-script.py [-h] [-v] [--no-plugins] [-V] COMMAND ... conda-script.py : error: unrecognized arguments: --force 해결방법을 알려주시면 감사하겠습니다!
안녕하세요 선생님! 강의 잘 듣고 있습니다. [실전 문제풀이1 : BOJ 3085 사탕 게임] 문제에서 선생님이 제공해주신 "풀이1-O(N^4)" 으로 python3 답을 제출했는데 시간 초과가 되는 걸로 나옵니다. 시간 복잡도가 O(N^4)인데 왜 시간 초과가 나는 것인지 궁금해서 문의드립니다!
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
에뮬레이터터 세팅하기 강의 잘 따라하다가 에뮬레이터 실행하면 아래 그림처럼 최소화된 상태에서 클릭도 안되고 더이상 진행이 안됩니다. 강의에서처럼 구글디바이스 기본화면이 별도창으로 나와야하는데 말이죠 ㅜ 진도는 나가야하기 때문에 다시 '체크헤제'취소하고 아래처럼 사용하고 있습니다. 코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다! [코드팩토리 디스코드] https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
답보다 구한 개수가 더 클 때와 같을 때를 구분해서 코드를 작성하면 정답이 아닌 것도 있는데 왜일까요?! 결국 개수가 같은 것을 찾는 것이니까 맞지 않나요...??? import sys #sys.stdin = open("00.txt", "r") k, n = map(int, input().split()) lens = list(int(input()) for _ in range(k)) rt = max(lens) lt = 0 while rt >= lt: temp = (rt+lt)//2 s = 0 for i in range(k): s += lens[i] // temp if s > n: lt = temp + 1 elif s < n: rt = temp - 1 else: re = temp lt = temp + 1 print(re)
초보자를 위한 ChatGPT API 활용법 - API 기본 문법부터 12가지 프로그램 제작 배포까지
bard api 관련 질문입니다. 1.bard 에서 gemini 로 서비스가 변경이 되었습니다. 변경된 교육이나 자료가 있을까요? 강의 내용 대로 했는 오류가 나오네요 (쿠키 삭제하고 해도) ch06>python 01_bard _exp.p y {'content': 'Response Error: b\')]}\\\'\\n\\n38\\n[[ "wrb.f r",null,null,null,null,[7]]]\\n56\\n[["di",29],["af.httprm",29,"-4302197897822373408",28]]\\n25\\n[["e",4,null,null,131]]\\n\'. \nUnable to get response.\nPlease double-check the cookie values and verify your network environment or google account.'} 알려주세요~~
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안녕하세요 :) 좋은 강의 만들어주신 덕분에 감사히 참고하고 있습니다. 섹션 16 U&I 프로젝트 4번째 동영상에서 궁금한 점이 있어 게시판에 여쭙게 되었습니다. pubspec.yaml에서 font weight를 설정해주었는데요, - family: Sunflower fonts: - asset: asset/font/Sunflower-Light.ttf - asset: asset/font/Sunflower-Medium.ttf weight: 500 - asset: asset/font/Sunflower-Bold.ttf weight: 700 강의에서 말씀주신대로 fontWeight 파라미터에서 FontWeight.w500 등을 통해 1번에서 설정했던 fontweight을 불러올 수 있었습니다. Text( 'D+1', style: TextStyle( color: Colors.white, fontFamily: 'Sunflower', fontSize: 50.0, fontWeight: FontWeight.w400, ), ), 다만, 1번에서 설정했던 500과 700 외에 다른 숫자들도 weight로 설정할 수 있더라구요. 그렇다면 굳이 1번과 같이 weight에 500, 700등을 미리 설정하는 것이 어떤 차이를 줄 수 있는지 여쭙습니다! 도움을 부탁드립니다. 감사합니다~!