커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
1-9 재무재표 불러오기
[왕초보] ChatGPT 300% 활용하기 v0
1주차
북마크
최*빈
댓글
1
추천
0
조회수
22
조회수
22
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


챗지피티(4.0)가 접근제한되있다고 새로운 코드를 알려줬는데


강사님 화면처럼 먼가 정돈된게 아니고 뒤죽박죽이네요 ㅠ


코딩은 처음해보는지라 무엇을 잘못한건가요





스파르타 즉문즉답




작성한 코드 및 에러 메세지

import requests

from bs4 import BeautifulSoup

import pandas as pd


# 삼성전자의 네이버 금융 재무제표 페이지 URL

url = 'https://finance.naver.com/item/main.nhn?code=005930'


# requests로 웹 페이지 가져오기

response = requests.get(url)


# BeautifulSoup 객체 생성

soup = BeautifulSoup(response.text, 'html.parser')


# 재무제표 테이블 찾기 (연간 재무제표 예시)

# 네이버 금융 사이트의 현재 구조에 맞춰 테이블 클래스 이름을 찾아야 합니다.

# 아래 코드는 사이트 구조가 변경되지 않았다면 작동합니다.

table = soup.find('table', {'class': 'tb_type1 tb_num tb_type1_ifrs'})


# 테이블 헤더 추출

thead = table.find('thead')

headers = [header.get_text().strip() for header in thead.find_all('th')]


# 테이블 데이터 추출

tbody = table.find('tbody')

rows = tbody.find_all('tr')

data = []

for row in rows:

  cols = row.find_all('td')

  cols = [ele.text.strip() for ele in cols if ele.text.strip()]

  if cols: # 빈 데이터가 아닌 경우에만 추가

    data.append(cols)


# 데이터프레임으로 변환

df = pd.DataFrame(data)

df.columns = headers[:len(df.columns)] # 컬럼 이름 할당


df.head() # 데이터프레임의 처음 몇 줄을 출력



현재 제 환경에서는 인터넷 접근이 제한되어 있어, 네이버 금융 사이트에 직접 접근하여 삼성전자의 재무제표를 크롤링할 수 없습니다. 그러나, 이러한 작업을 수행하는 파이썬 코드를 제공할 수 있습니다. 이 코드는 네이버 금융 사이트의 HTML 구조에 기반하여 작성되었으며, 해당 구조가 변경되었다면 코드 수정이 필요할 수 있습니다.



import requests

from bs4 import BeautifulSoup

import pandas as pd


# 삼성전자의 네이버 금융 재무제표 페이지 URL

url = 'https://finance.naver.com/item/main.nhn?code=005930'


# requests로 웹 페이지 가져오기

response = requests.get(url)


# BeautifulSoup 객체 생성

soup = BeautifulSoup(response.text, 'html.parser')


# 재무제표 테이블 찾기 (연간 재무제표 예시)

table = soup.find('table', {'class': 'tb_type1 tb_num tb_type1_ifrs'})


# 테이블 헤더 추출

thead = table.find('thead')

headers = [header.get_text().strip() for header in thead.find_all('th')]


# 테이블 데이터 추출

tbody = table.find('tbody')

rows = tbody.find_all('tr')

data = []

for row in rows:

  cols = row.find_all('td')

  cols = [ele.text.strip() for ele in cols if ele.text.strip()]

  if cols: # 빈 데이터가 아닌 경우에만 추가

    data.append(cols)


# 데이터프레임으로 변환

df = pd.DataFrame(data)

df.columns = headers[:len(df.columns)] # 컬럼 이름 할당


# 데이터프레임 출력

print(df)


취소
 공유
취소
댓글 0
댓글 알림
나의얼굴