웹스크래핑을 통한 데이터 수집시 클래스가 같은 경우

조회수 718회

안녕하세요 파이썬 초보입니다.

제가 fnguide라는 사이트에서 웹스크래핑을 하는데요, 필요한 자료를 찾고자 하는데,

둘의 클래스가 같습니다..하...

이건 정말 예상치 못한 거라 당황스럽네요.

이걸 어떻게 해결해야 하나요.

답변주시면 감사하겠습니다.

좀더 정확하게 말씀드리면, 연간데이터 자료와, 분기 데이터 자료의 클래스가 동일합니다.

이미지

# -*- coding: utf-8 -*-

import pandas as pd
import requests
from bs4 import BeautifulSoup
from datetime import datetime
import numpy as np

code = '298000'


# 데이터 가져오기

fs_rpt_url = "http://comp.fnguide.com/SVO2/ASP/SVD_Finance.asp?pGB=1&gicode=A{}&cID=&MenuYn=Y&ReportGB=&NewMenuID=103&stkGb=701".format(code)
fs_rpt_res = requests.get(fs_rpt_url)
soup = BeautifulSoup(fs_rpt_res.text, "lxml")

#  column 설정하기 + 데이터프레임 생성

columns = soup.find("table", attrs = {"class":"us_table_ty1 h_fix zigbg_no"}).find("thead").find_all("th")
data_column = [column.get_text().strip() for column in columns][1:7]
income_sheet_df = pd.DataFrame(data=None, columns=data_column, index=['연습'])

# data 찾기
data_rows = soup.find("table", attrs = {"class":"us_table_ty1 h_fix zigbg_no"}).find("tbody").find_all("tr")

for row in data_rows:
    columns = row.find_all("td")
    data_row = [column.get_text().strip() for column in columns]
    income_sheet_df = income_sheet_df.append(pd.Series(data_row, index=income_sheet_df.columns), ignore_index=True)

# dataframe 예쁘게 만들기

financial_index = ['연습', '매출액', '매출원가', '매출총이익', '판매비와관리비', '   인건비', '   유무형자산상각비', '   연구개발비', '   광고선전비','   판매비','   관리비','   기타원가성비용','   기타','영업이익','영업이익(발표기준)','금융수익','   이자수익','   배당금수익','   외환이익','   대손충당금환입액','   매출채권처분이익','   당기손익-공정가치측정 금융자산관련이익','   금융자산처분이익','   금융자산평가이익','   금융자산손상차손환입','   파생상품이익','   기타금융수익','금융원가','   이자비용','   외환손실','   대손상각비','   당기손익-공정가치측정 금융자산관련손실','   매출채권처분손실','   금융자산처분손실','   금융자산평가손실','   금융자산손상차손','   파생상품손실','   기타금융원가','기타수익','   이자수익','   배당금수익','   외환이익','   재고자산감모손실환입','   재고자산폐기(처분)이익','   당기손익-공정가치측정 금융자산평가이익','   자산처분(폐기)이익','   자산평가이익','   자산손상차손환입','   파생상품이익','   임대료수익','   로열티수익','   수수료수익','   대손충당금환입','   충당부채환입액','   기타','기타비용','   이자비용','   외환손실','   재고자산감모손실','   재고자산폐기(처분)손실','   당기손익-공정가치측정 금융자산평가손실','   자산처분(폐기)손실','   자산평가손실','   자산손상차손','   파생상품손실','   기타대손상각비','   충당부채전입액','   기타','종속기업,공동지배기업및관계기업관련손익','   지분법손익','   종속기업,공동지배기업및관계기업투자주식처분손익','   종속기업,공동지배기업및관계기업투자주식손상관련손익','   기타', '세전계속사업이익', '법인세비용', '계속영업이익', '중단영업이익', '당기순이익', '   지배주주순이익', '   비지배주주순이익']
income_sheet_df.index = financial_index
income_sheet_df = income_sheet_df.drop("연습")

# income_sheet_df.to_excel('income_sheet.xlsx')

print(income_sheet_df)
  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)