묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
2024.08.28 수요일 기준 날씨 정보 가져오기 소스코드입니다 (참고하세요 : ) )
개인적으로 만든거다 보니, 부족한 면이 많습니다. 헷갈리시는 분들이나 조금 어렵다고 느껴지는 분들을 위해서 공유해드려요 !import requests from bs4 import BeautifulSoup ''' [오늘의 날씨] 흐림, 어제보다 00도 높아요 현재 00도 (최저 00도 / 최고 00도) 오전 강수확률 00% / 오후 강수확률 00% 미세먼지 좋음 초미세먼지 좋음 ''' def scrape_weather(): print("[오늘의 날씨]") url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EB%82%A0%EC%94%A8" res = requests.get(url) res.raise_for_status() soup = BeautifulSoup(res.text, "lxml") cast = soup.find("p", class_="summary").get_text() curr_temp = soup.find("div", class_="temperature_text").get_text().replace("현재 온도", "") # 현재온도 targets = soup.find_all("li", class_="week_item today") min_temp = targets[0].find("span", class_="lowest").get_text() # 최저 온도 max_temp = targets[0].find("span", class_="highest").get_text() # 최고 온도 morning_and_afternoon = targets[0].find_all("span", class_="weather_left") morning_rain_rate = morning_and_afternoon[0].get_text() # 오전 강수확률 afternoon_rain_rate = morning_and_afternoon[1].get_text() # 오후 강수확률 dust_list = soup.find_all("li", class_="item_today") pm10 = dust_list[0].get_text() # 미세먼지 pm25 = dust_list[1].get_text() # 초미세먼지 # 출력 print(cast) print(f"현재 {curr_temp} ({min_temp} / {max_temp})") print(f"강수확률 {morning_rain_rate.strip()} / {afternoon_rain_rate.strip()}") print() print(f"{pm10.strip()}") print(f"{pm25.strip()}") print() if __name__ == "__main__": scrape_weather() # 오늘의 날씨 정보 가져오기
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
24년, 부동산 퀴즈 코드입니다. 참고하세요!!
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from webdriver_manager.chrome import ChromeDriverManager from bs4 import BeautifulSoup # Setup Chrome options options = webdriver.ChromeOptions() options.add_experimental_option("detach", True) options.add_argument("--user-agent=''") # Initialize the browser browser = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) # 옵션 추가 - 웹페이지 최대화 browser.maximize_window() # 원하는 웹사이트로 이동 url = "https://realty.daum.net/home/apt/danjis/38487" browser.get(url) # 모든 요소가 로드될 때까지 대기 (최대 10초) WebDriverWait(browser, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "css-1dbjc4n"))) # 데이터 뽑기 시작 soup = BeautifulSoup(browser.page_source, "lxml") # 매물 정보 가져오기 targets = soup.find_all("div", class_="css-1dbjc4n r-1awozwy r-s4x47v r-18u37iz r-17s6mgv r-1m04atk") for idx, target in enumerate(targets): # 가격과 거래 방법 추출 price = target.find("div", class_="css-1563yu1 r-aw03qq r-1wbh5a2 r-1w6e6rj r-159m18f r-1b43r93 r-b88u0q r-rjixqe r-13hce6t r-1ff274t r-13wfysu r-q42fyq r-1ad0z5i") if price: plate = price.get_text().split(" ") use = plate[0] final_price = '' for index in range(1, len(plate)): final_price += plate[index] else: continue # 면적과 층수 정보 추출 area_and_floors = target.find_all("div", class_="css-1563yu1 r-1dnsj32 r-1wbh5a2 r-1w6e6rj r-159m18f r-n6v787 r-majxgm r-14yzgew r-fdjqy7 r-13wfysu r-q42fyq r-1ad0z5i") if len(area_and_floors) >= 2: area = area_and_floors[0].get_text() floor = area_and_floors[1].get_text()[-3:] else: area = "N/A" floor = "N/A" print("=" * 10 + " 매물 {0} ".format(idx) + "=" * 10) print(f"거래 : {use}") print(f"가격 : {final_price}".strip()) print(f"면적 : {area}".strip()) print(f"층 : {floor}".strip()) print() browser.quit()
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
git hub에 push할때 user-agent가 노출되도 상관이 없나요 ?
git hub에 저의 user-agent가 노출되어도 상관이 없을까요 ? git hub에 소스코드를 push하면서 진행을 하고 있는데 괜찮을까요 ?
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기 - 섹션1 [2/2]
데이터 전처리 과정에서 이해되지 않는 부분이 있습니다.import pandas as pdimport FinanceDataReader as fdrdf_krx = fdr.StockListing('KRX') df_krx 로 데이터를 확인했습니다.ㄴ일부 컬럼 (ex.Dept)에 결측치가 있습니다. <- 값이 비어있습니다. Nan 값으로 채워진 것은 아닙니다.ㄴ이 때 info() 메소드와 df_krx.isnull()로 확인해보면 null값이 없는 것으로 나오고 isnull() 또한 모두 false가 나오는데 원인을 모르겠습니다. ㄴ이후 to_csv 메소드를 사용하여 파일을 저장한 후 저장한 파일을 읽어왔을 때는 해당 값들이 NaN 값으로 바뀌어 있는데요. 원인이 무엇일까요?
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
강의동영상이 잘못 업로드 된거 같아요
안녕하세요. 강의 듣던 중에 제목과 다른 영상이 있어서 문의 드려요.섹션 5 - 프로젝트 2"Youtube 동영상 댓글분석 - LLM 모델로 감성 분류 및 평점 예측" 동영상이"Youtube 상품 리뷰 영상에서 상품정보를 추출, 요약" 과 동일한 영상입니다.잘못 업로드 된거 같아요확인 부탁드립니다.
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
LLM 기능 사용시에 라이브러리 에러 문제
안녕하세요, 선생님 강의 잘 듣고 있습니다.공유 해 주신 코드를 실행 할 때 LLM 기능 사용할 때 에러가 발생되서 실행이 되지 않습니다. 에러코드 첨부 드립니다. ---------------------------------------------------------------------------RateLimitError Traceback (most recent call last)Cell In[14], line 29 26 # Chain 27 llm_chain = prompt | llm | output_parser---> 29 response = llm_chain.invoke({"text": text}) 31 responseFile ~\miniconda3\envs\study\Lib\site-packages\langchain_core\runnables\base.py:2499, in RunnableSequence.invoke(self, input, config) 2497 try: 2498 for i, step in enumerate(self.steps):-> 2499 input = step.invoke( 2500 input, 2501 # mark each step as a child run 2502 patch_config( 2503 config, callbacks=run_manager.get_child(f"seq:step:{i+1}") 2504 ), 2505 ) 2506 # finish the root run 2507 except BaseException as e: 생략 ~ 해결 방법이 있을까요?
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
강의에서 소스코드는 어디서 볼 수 있을까요?
찾아봤는데 못찾겠어서 질문 드립니다,,,,
-
미해결파이썬 코드로 배우는 데이터분석
공지
강좌 운영이나 강의 내용에 관해 궁금한 점이 있으면 자유롭게 나누어주세요.교수자, 수강생 누구나 글쓰기와 댓글 쓰기가 가능합니다.
-
해결됨R언어 프로그래밍과 데이터분석
공지
강좌 운영이나 강의 내용에 관해 궁금한 점이 있으면 자유롭게 나누어주세요.교수자, 수강생 누구나 글쓰기와 댓글 쓰기가 가능합니다.
-
해결됨데이터분석 입문
공지
강좌 운영이나 강의 내용에 관해 궁금한 점이 있으면 자유롭게 나누어주세요.교수자, 수강생 누구나 글쓰기가 가능합니다.
-
해결됨Google Authenticator, QR, Cron을 활용하여 자동화 만들기
프로젝트 구조 질문.
안녕하세요 혹시 이 프로젝트구조에서 network 폴더 부분을 eCommerce 강의에서 사용하신 router 폴더와 다르게 이름을 지으신 이유가 있으실까요? 기능은 비슷한거 같아서 질문 드립니다.
-
미해결Google Authenticator, QR, Cron을 활용하여 자동화 만들기
OpenSource를 통해HTML 파일에서 원하는 데이터 추출하기편 버그
section 5 : OpenSource를 통해HTML 파일편 에서 11분 21초에 보시면 터미널에서 578,000원 데이터를 못 가져오고 있습니다. 실제로 실습에서도 실행한 결과. 동일한 카드셀렉터와 inner셀럭터 그리고 태그가 같더라도 일부 금액을 못 읽어오네요.
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
Mac 환경에서 nbextensions 활성화 하는 방법
맥북 M1 pro 입니다.저는 다음과 같은 방법으로 nbextensions 활성화가 가능했었습니다. conda update --all conda install -c anaconda notebook conda install -c conda-forge jupyter_contrib_nbextensions 터미널에서 위 3개를 순서대로 실행 후jupyter contrib nbextension install --user여기까지 실행하시고 Anaconda Navigator 를 켜시고 jupyter notebook 을 확인해보시면 버전이 6.5.7 로 바뀌어있을겁니다. 근데 실행하면 mac command tool 이 없니 뭐니 에러가 발생합니다.. 여기서 우측상단 설정 아이콘을 클릭하셔서 Update application 을 한 번 실행해주시고 업데이트 완료 후 다시 jupyter notebook 을 실행 하시면 nbextensions 가 잘 나옵니다!
-
미해결파이썬 중급
def attach_wrapper의 return func를 하는 이유?
안녕하세요 강사님!좋은 강의 정말 잘 듣고 있습니다. 지난 질문에도 친절하게 답변 달아주셔서 감사의 말씀 드립니다.이번 메타프로그밍 3.1절을 들으면서 잘 이해가 안되는 부분이 있어서 이렇게 질문글을 작성합니다.질문은 다음과 같습니다.Q1. attach_wrapper가 return 하는 func는 누구인가? 최종적으로 그 func는 누가 받는가?def attach_wrapper(obj, func=None): if func is None: return partial(attach_wrapper, obj) setattr(obj, func.__name__, func) return func위의 def attach_wrapper 가 @attach_wrapper(wrapper) 형태로 데코레이트하면, func=None일 때 partial()을 통해서 def attach_wrapper 함수 객체 본인을 return 해서 첫번째 인자인 obj를 wrapper로 고정시키는 것까지 이해를 했습니다.func=None이 아니면 setattr()을 통해, obj가 갖고 있는 어트리뷰트 func의 이름을 인자로 받은 func로 값을 셋팅하는 것까지도 이해를 했습니다.그런데 최종적으로 return 되는 게 func라는 것이 잘 이해가 되지 않습니다. return 되는 func를 누가 받는걸까요?func를 유추하기까지 저의 사고 흐름은 아래와 같았습니다.@attach_wrapper(wrapper) def set_level(newlevel): nonlocal level level = newleveldef set_level 이 데코레이트 되는 내부 사정은 set_level = attach_wrapper(wrapper)(set_level) 이 될텐데요.set_level = attach_wrapper(wrapper)(set_level) 에서 attach_wrapper(wrapper)는 partial()을 통해 def attach_wrapper 본체가 return 되었기 때문에, 데코레이트 되는 내부 사정을 달리 표현하면 set_level = attach_wrapper(obj=wrapper, func=set_level) 라고 이해를 했습니다.그러면.. attach_wrapper(obj=wrapper, func=set_level) 가 return 하는 게 func인데, set_level = func 이니까.. set_level = set_level 이 되는건가요? 추가 질문def attach_wrapper 함수에서 return func를 주석처리 하고 실행을 해도 결과가 똑같이 나오는데 이유를 잘 모르겠습니다.. 어째서 return func가 아무런 효용이 없었던 걸까요..?혹시 제가 잘 못 이해한 부분이 있다면 어김없이 피드백 부탁드리겠습니다!(아래에는 출력 결과물을 첨부하였습니다.)""" # return func 주석 처리 후 결과 DEBUG:__main__:add DEBUG:__main__:Add called WARNING:__main__:Add called DEBUG:__main__:countdown CRITICAL:__main__:countdown DEBUG:__main__:countdown2 CRITICAL:__main__:countdown2 5 5 5 countdown 0.009128093719482422 countdown 0.007673978805541992 countdown2 0.0056438446044921875 countdown2 0.005079030990600586 --- # 원본 코드 실행 결과 DEBUG:__main__:add DEBUG:__main__:Add called WARNING:__main__:Add called DEBUG:__main__:countdown CRITICAL:__main__:countdown DEBUG:__main__:countdown2 CRITICAL:__main__:countdown2 5 5 5 countdown 0.007693052291870117 countdown 0.006663084030151367 countdown2 0.005110979080200195 countdown2 0.0052149295806884766 """
-
해결됨파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
pd.concat(result.tolist()) 오류 문의
5.1 업종 테마주 수집.ipynb 진행 과정에서pd.concat(result.tolist()) 에서InvalidIndexError: Reindexing only valid with uniquely valued Index objects가 발생하는데, inplace=True를 추가 또는 다양한 방법으로 해결하려 해도 해결이 되지 않습니다.이전 다른 분들도 같은 오류가 나서 문의를 하였는데 해결이 되었나요? 참고로, 테스트 하는 과정에서 get_item_info 함수 안의finance_info = tables[3].iloc[:, [0, -1]]finance_info.columns = [0, 1]item_info.append(finance_info)문장을 주석처리 하면 pd.concat(result.tolist()) 부분이 정상적으로 처리가 되고 있습니다. 원인과 해결 방법을 알려 주시면 감사하겠습니다.
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
5.1 제약 데이터 수집 오류 해결
안녕하세요, 섹션 10의 [5/6] 강의 실습을 진행하는데 result의 column이 다른 경우가 있어서 후에 concat을 하는 과정에 에러가 발생합니다. 이런 경우 어떻게 해결할 수 있나요?
-
해결됨파이썬 중급
eval(repr(p)) 가 진짜 Pair 객체로 만들어지는 이유?
안녕하세요 강사님, 수업 잘 듣고 있습니다. 좋은 강의 만들어 주셔서 감사드립니다.수업을 듣다가 9분 12초 쯤에서 질문이 있어서 게시글 남깁니다.eval(repr(p)) 에서,repr(p) 가 Pair 라는 클래스를 호출해서 인스턴스로 만드는 string을 나타내기 때문에, eval()을 했을 때 Pair라는 객체가 생성되는 게 맞을까요?바꿔서 말하면 repr(p)가 평가되었을 때 Pair(3,4)와 같은 객체 생성 expression과 같기 때문에 그 expression이 eval()을 타서 Pair 객체가 만들어지는거죠?! 답변 주시면 감사하겠습니다!
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
Table of contents 문의드립니다
안녕하세요, table of contents 정상적으로 설정했는데.ipynb에서 table of contents 버튼을 누르면 아래 사진처럼 목록이 정상적으로 보이지 않습니다.혹시 해결법 아시나요? 감사합니다!
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
실습 라이브러리 설치하기 (requirements.txt) 폴더?
안녕하세요. 강사님, 실습 라이브러리 설치하기 (requirements.txt) 위해서어느 폴더에 자료를 저장해야하나요? 가상환경 study로 들어가서 서브로 디렉토리를 따로 만들어야하나요? 아니면 C: drive 개인폴더에 자료저장 공간을 임의로 만들어서 진행해도 되는지요?
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
concat을 통한 데이터프레임 합치기
# result를 list로 만들고 concat을 통해 DataFrame으로 만듭니다.# concat으로 데이터프레임을 합쳐줄때는 리스트 형태로 각 데이터프레임을 넣어주어야 합니다.pd.concat(result.tolist()) --------------------------------------------------------InvalidIndexError: Reindexing only valid with uniquely valued Index objectsdf_item = pd.concat(item_info, ignore_index=True)도 해보았고, 중복값도 없다고 나오는데 계속 이 부분에서 동일한 에러가 뜹니다.. 어떻게 해결해야 할까요? 이 앞부분까지는 모두 정상출력되었습니다!