Git Product home page Git Product logo

dart-fss's People

Contributors

dependabot[bot] avatar dn3point avatar dveamer avatar jackmappotion avatar josw123 avatar sooheon avatar urangurang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dart-fss's Issues

비상장주식 find_by_stock_code으로 search

안녕하세요 dart_fss를 사용하다 비상장기업 조회를 하다 issue가 생겼습니다.

예를 들어 "차이나하오란리사이클링유한공사[900090]"이라는 상장폐지된 기업을 종목코드를 이용하여 검색하려고 하면 아무 결과도 나오지 않습니다.

import dart_fss as dart
api_key = '364b0537dda8f51af24ec751fb3fa8bf8ecf5002'
dart.set_api_key(api_key=api_key)
crp_list = dart.get_corp_list()
crp_list.find_by_stock_code('900090')

반면, 회사이름으로 검색하면 정상적으로 나옵니다.

crp_list.find_by_corp_name('차이나하오란리사이클링유한공사')
[[00790121]차이나하오란리사이클링유한공사]

crp_list가 상장된 기업만 filter 된거라면 이름으로 검색하면 안 나와야할 것이고, 비상장 기업도 포함했다면 종목코드로 검색이 되어야할텐데 종목코드로 비상장 기업을 검색하는 방법이 있을까요?

감사합니다.

Could not find consolidated financial statements

재무재표추출 corp.extract_fs를 이용해서 대한약품 이란 회사의 재무재표를 추출해보았는데요. Could not find consolidated financial statements 라는 오류가 뜹니다. 뭐가 문제 인지 모르겠는데 도와주세요.

Download 초반에서 멈추는 문제

samsung_electronics.get_financial_statement(start_dt='20120101') 를 실행하면 31kb까지 받아진 이후에 멈춰버립니다.

Download: 31.0KB [00:01, 17.8KB/s]

미등록 인증키라고 뜹니다.

Traceback (most recent call last):
File "dart.py", line 5, in
dart.dart_set_api_key(api_key=api_key)
File "/usr/local/lib/python3.7/site-packages/dart_fss/auth.py", line 9, in dart_set_api_key
DartAuth().api_key = api_key
File "/usr/local/lib/python3.7/site-packages/dart_fss/auth.py", line 68, in api_key
check_err_code(**data)
File "/usr/local/lib/python3.7/site-packages/dart_fss/errors.py", line 32, in check_err_code
raise DartAPIError(err_code, err_msg)
dart_fss.errors.DartAPIError: Unregistered API key, 미등록 인증키

문서에 보면 XML을 사용하면 미등록인증키라고 뜬다고 되어있는데요. Json으로 하려면 코드를 어떻게 수정해야 하는지 모르겠습니다.

혹시 인증키가 OpenAPI로 바뀐 것 때문에 그럴 수 있나요?

재무상태표를 연속으로 가져올 때 메모리 오류 발생

안녕하세요,
전체 기업에 대한 장기간의 재무상태표가 필요하여, 등록된 모든 기업에 대해 재무상태표를 읽어 와서 엑셀 파일로 저장하는 프로그램을 작성 중입니다.
for loop를 돌면서 .get_financial_statement()와 .to_excel (file_name)를 반복하는 간단한 프로그램입니다. 그런데 얼마간의 루프를 돈 후 아래와 같이 메모리 에러가 발생합니다.
상세 에러 메시지는 첨부하였습니다.

확인 좀 부탁 드립니다.
항상 감사합니다. ^^
Error_log_20190724.txt

ImportError: DLL load failed: 이 작업을 완료하기 위한 페이징 파일이 너무 작습니다.
MemoryError
File "", line 833, in get_data
File "", line 833, in get_data
MemoryError
MemoryError
MemoryError

10년 이상 재무 조회 시 오류

라이브러리 잘 사용하고 있습니다. 감사합니다.

아래와 같이 10년 이상의 정보를 조회하면 연도가 잘 못 되는 오류가 발생합니다.
fs = samsung.extract_fs(bgn_de='20000101', end_de='20201231')

아래와같이 2009년 데이터가 두개 존재하는 것을 볼 수 있습니다.
2009년 자료는 10년 이하 데이터 조회 시 정상 조회됩니다.

20110101 20101231 20091231 20090101 20081231

위 코드로 조회한 삼성전자 20년 재무 자료입니다.
00126380_annual.xlsx

VisibleDeprecationWarning 이슈

제가 뭘 잘못 쓴건지 모르겠지만...

파일 저장은 되는데 warning이 계속 뜨네요.
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/numpy/core/_asarray.py:83: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray

분기별 재무제표 조회시 에러

안녕하세요. 라이브러리 잘 쓰고 있습니다.
분기별 재무제표 조회 코드를 돌리다가 다음과 같은 에러가 발생해서 문의드립니다. 뭔가 필드명이 안맞아서 그러는 것 같은데 혹시 해당 에러에 대해 체크 부탁드릴 수 있을까요? 감사합니다.

  • 재무제표 크롤링 코드
crp_list = dart.get_crp_list()
samsung_electronics = crp_list.find_by_name('삼성전자')[0]
fs_quarter = samsung_electronics.get_financial_statement(start_dt='20010101', report_tp='quarter')
  • 오류 메시지
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-20-ae5a8d98e6a2> in <module>
----> 1 fs_quarter = samsung_electronics.get_financial_statement(start_dt='20010101', report_tp='quarter')

~/anaconda3/lib/python3.7/site-packages/dart_fss/crp.py in get_financial_statement(self, start_dt, end_dt, fs_tp, separate, report_tp, lang, show_abstract, show_class, show_depth, show_concept, separator)
    186                                           report_tp=report_tp, lang=lang, show_abstract=show_abstract,
    187                                           show_class=show_class, show_depth=show_depth, show_concept=show_concept,
--> 188                                           separator=separator)
    189 
    190 

~/anaconda3/lib/python3.7/site-packages/dart_fss/fs.py in search_financial_statement(crp_cd, start_dt, end_dt, fs_tp, separate, report_tp, lang, show_abstract, show_class, show_depth, show_concept, separator)
    484         quarter = search_report_with_cache(crp_cd=crp_cd, start_dt=start_dt, end_dt=end_dt,
    485                                            bsn_tp=['A003'], page_set=100, series='asc')
--> 486         statements = append_fs(statements, quarter, fs_tp=fs_tp, separate=separate, lang=lang, report_tp='quarter')
    487 
    488     columns = list(statements.columns)

~/anaconda3/lib/python3.7/site-packages/dart_fss/fs.py in append_fs(financial_statements, reports, fs_tp, separate, lang, report_tp)
    327     regex_label = re.compile(r'[ㄱ-힣]+\(?[ㄱ-힣]+\)?')
    328     for report in tqdm(reports[1:], desc=desc, unit='page'):
--> 329         fs = read_fs_table(report, fs_tp=fs_tp, separate=separate, lang=lang)
    330 
    331         if fs is None:

~/anaconda3/lib/python3.7/site-packages/dart_fss/fs.py in read_fs_table(report, fs_tp, lang, separate)
    295     regex_text = separate_table if separate else consolidated_table
    296 
--> 297     df = html_to_df(soup, regex_text, separate=separate, lang=lang)
    298     return df
    299 

~/anaconda3/lib/python3.7/site-packages/dart_fss/fs.py in html_to_df(soup, regex_text, separate, lang)
    226     tbody = get_table_body(table_html)
    227     df = pd.read_html(tbody)[0]
--> 228     df.columns = rename_columns(header=header, columns=columns, lang=lang, separate=separate)
    229     for column in df.columns[1:]:
    230         df[column] = df[column].apply(str_to_float)

~/anaconda3/lib/python3.7/site-packages/dart_fss/fs.py in rename_columns(header, columns, lang, separate)
     58                 additional = ''
     59 
---> 60             if header[key]['instant_datetime'] is None:
     61                 start_datetime = header[key]['start_datetime'].strftime('%Y-%m-%d')
     62                 end_datetime = header[key]['end_datetime'].strftime('%Y-%m-%d')

KeyError: '제42기1분기말'

손익계산서 일부 값 누락 및 단위 오류

안녕하십니까, 또 issue를 제기해서 죄송합니다.
혹시 제가 black list에 올라가 있지는 않은지요, ㅠㅠ

아래는 삼성전자의 재무제표를 일괄저장한 결과입니다.
당기순이익, 주당이익 등 일부 항목이 (20080101-20081231)을 포함하여 이전 회계연도의 값이 없습니다. dart.fss.or.kr에서 직접 다운받은 파일에는 값이 존재합니다.
삼성전자.xlsx

image

그리고, 주당이익이 특정 연도에서 크게 나옵니다. 아마 단위:백만원 적용 문제인 것 같습니다.
image

항상 빠른 대응에 감사드립니다.

재무상태표 가져오기 오류 문의

안녕하세요,
dart_fss를 이용하여 기업 분석 코드를 작성하고 있습니다.
저는 10년 이상의 장기간 데이터 분석이 필요하여 아래와 같이 2000년 1월 1일 부터 현재까지의 재무상태표 read를 사도하였습니다.

crp_name = '고려제강'
crp_list = dart.get_crp_list ()
crp_name_index = crp_list.find_by_name ( crp_name ) [0]
fs_tmp = crp_name_index.get_financial_statement(start_dt='20000101')

그런데, 아래와 같은 오류가 발생합니다.
Download: 28.0KB [00:00, 177KB/s]
Extracting fs-annual: 48%|████▊ | 13/27 [01:01<01:01, 4.41s/page]Traceback (most recent call last):
File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\IPython\core\interactiveshell.py", line 3325, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "", line 1, in
fs_tmp = crp_name_index.get_financial_statement(start_dt='20000101')
File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\crp.py", line 188, in get_financial_statement
separator=separator)
File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 533, in search_financial_statement
statements = append_fs(statements, reports, fs_tp=fs_tp, separate=separate, lang=lang)
File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 386, in append_fs
fs = read_fs_table(report, fs_tp=fs_tp, separate=separate, lang=lang)
File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 354, in read_fs_table
df = html_to_df(soup, regex_text, separate=separate, lang=lang)
File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 245, in html_to_df
korean_unit = header_html.find(text=won_regex)
AttributeError: 'NoneType' object has no attribute 'find'

삼성전자의 경우는 start_dt='20000101'로 해도 오류 없이 읽어 오는데 데이터는 2005년에서 현재까지 데이터만 읽어 옵니다.
확인 좀 부탁 드립니다.
감사합니다.

일부 기업 재무상태표 가져오기 오류

안녕하세요,
빠른 대응에 항상 감사드립니다.

재무상태표 추출 시 아래와 같은 오류가 발생합니다.
기업 별로 보고서 양식이 일정하지 않으니 case별로 문제가 발생하는 것 같습니다.
감사합니다.

Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] on win32
import dart_fss as dart
api_key = '0e3b458c6a7d24ccbcc9056ecb9b5a1e66b5d320' # dart 인증키
dart.dart_set_api_key ( api_key = api_key ) # dart 인증
crp_list = dart.get_crp_list () # 전체 기업 리스트 (class)
crp_name = '디에이피'
crp_name_index = crp_list.find_by_name (crp_name) [0] # 지정 기업 index
fs = crp_name_index.get_financial_statement(start_dt='20000101')
Download: 18.0KB [00:00, 213KB/s]
Download: 18.0KB [00:00, 212KB/s]
Download: 14.0KB [00:00, 260KB/s]
Download: 14.0KB [00:00, 292KB/s]
Download: 15.0KB [00:00, 251KB/s]
Download: 15.0KB [00:00, 284KB/s]
Download: 15.0KB [00:00, 279KB/s]
Download: 15.0KB [00:00, 301KB/s]
Download: 14.0KB [00:00, 281KB/s]
Extracting fs-annual: 27%|██▋ | 4/15 [00:21<00:58, 5.36s/page]Traceback (most recent call last):
File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\IPython\core\interactiveshell.py", line 3325, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "", line 1, in
fs = crp_name_index.get_financial_statement(start_dt='20000101')
File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\crp.py", line 188, in get_financial_statement
separator=separator)
File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 577, in search_financial_statement
statements = append_fs(statements, reports, fs_tp=fs_tp, separate=separate, lang=lang)
File "D:\Proj\Analytics\Extracting_from_DART\dart_fss\venv\lib\site-packages\dart_fss\fs.py", line 435, in append_fs
overlap = set(fs.columns[1:]).intersection(set(financial_statements.columns))
AttributeError: 'NoneType' object has no attribute 'columns'

fs_data에는 왜 재무상태표만 있나요?

extract_fs하고 fs.save()를 하고 나온 파일에 보니까 재무상태표에 대한 값만 있네요.
보통 재무제표라고 하면 재무상태표, 손익계산서, 현금흐름서 등을 포함하는 것일텐데,
fs보다는 extract_bs 이런식으로 이름을 변경하셔야 혼동이 없을거 같습니다.

ValueError: Number of processes must be at least 1

Traceback (most recent call last): File "Dart_crawler.py", line 25, in fs_annual = samsung_electronics.get_financial_statement(start_dt='20120101') File "C:\ProgramData\Anaconda3\envs\Dart\lib\site-packages\dart_fss\crp.py", line 188, in get_financial_statement separator=separator) File "C:\ProgramData\Anaconda3\envs\Dart\lib\site-packages\dart_fss\fs.py", line 454, in search_financial_statement last_xbrl = last_report.xbrl File "C:\ProgramData\Anaconda3\envs\Dart\lib\site-packages\dart_fss\reports.py", line 147, in xbrl self.load_xbrl() File "C:\ProgramData\Anaconda3\envs\Dart\lib\site-packages\dart_fss\reports.py", line 223, in load_xbrl self.load_page(index=[0], progressbar_disable=True) File "C:\ProgramData\Anaconda3\envs\Dart\lib\site-packages\dart_fss\reports.py", line 202, in load_page pool = mp.Pool(processes=process_cnt) File "C:\ProgramData\Anaconda3\envs\Dart\lib\multiprocessing\context.py", line 119, in Pool context=self.get_context()) File "C:\ProgramData\Anaconda3\envs\Dart\lib\multiprocessing\pool.py", line 169, in init raise ValueError("Number of processes must be at least 1") ValueError: Number of processes must be at least 1

mp.cpu_count()가 1을 반환시 발생하는 오류

'LG화학' 당기순이익(ifrs-full_ProfitLoss) 일부 추출 되지 않음

안녕하세요. 좋은 라이브러리 만들어 주셔서 감사합니다.

'LG화학' 종목의 경우 [20190101-20191231] 기간 처럼 full year의 경우 당기순이익 값이 추출되나
[20200101-20200630] 처럼 반기/분기 보고서의 경우 nan 값으로 추출됩니다.

추출에 사용한 code snippet 입니다.

fs = corp.extract_fs(bgn_de=begin, fs_tp=('is',), report_tp='quarter', lang='ko', separator=False)
fs_is = fs.show('is')  # 연결손익계산서
print('is', fs_is)

현재 Dart-Fss-Classifier를 같이 사용하고 있습니다.
제가 제대로 사용하고 있지 않은지, 혹은 수정 방향에 가이드를 알려 주시면 감사하겠습니다.

전환일 포함시 발생하는 오류

재무제표 항목중 '전환일' 포함시 발생하는 오류

AttributeError Traceback (most recent call last)
in
----> 1 samsung.get_financial_statement(start_dt='20100101', separate=True)

C:\ProgramData\Anaconda3\lib\site-packages\dart_fss\crp.py in get_financial_statement(self, start_dt, end_dt, fs_tp, separate, report_tp, lang, show_abstract, show_class, show_depth, show_concept, separator)
186 report_tp=report_tp, lang=lang, show_abstract=show_abstract,
187 show_class=show_class, show_depth=show_depth, show_concept=show_concept,
--> 188 separator=separator)
189
190

C:\ProgramData\Anaconda3\lib\site-packages\dart_fss\fs.py in search_financial_statement(crp_cd, start_dt, end_dt, fs_tp, separate, report_tp, lang, show_abstract, show_class, show_depth, show_concept, separator)
528 break
529
--> 530 statements = append_fs(statements, reports, fs_tp=fs_tp, separate=separate, lang=lang)
531
532 if compare_str(report_tp, 'half') or compare_str(report_tp, 'quarter'):

C:\ProgramData\Anaconda3\lib\site-packages\dart_fss\fs.py in append_fs(financial_statements, reports, fs_tp, separate, lang, report_tp)
381 regex_label = re.compile(r'[ㄱ-힣]+(?[ㄱ-힣]+)?')
382 for report in tqdm(reports[1:], desc=desc, unit='page'):
--> 383 fs = read_fs_table(report, fs_tp=fs_tp, separate=separate, lang=lang)
384
385 if fs is None:

C:\ProgramData\Anaconda3\lib\site-packages\dart_fss\fs.py in read_fs_table(report, fs_tp, lang, separate)
349 regex_text = separate_table if separate else consolidated_table
350
--> 351 df = html_to_df(soup, regex_text, separate=separate, lang=lang)
352 return df
353

C:\ProgramData\Anaconda3\lib\site-packages\dart_fss\fs.py in html_to_df(soup, regex_text, separate, lang)
276 tbody = get_table_body(table_html)
277 df = pd.read_html(tbody)[0]
--> 278 df.columns = rename_columns(header=header, columns=columns, lang=lang, separate=separate)
279
280 if '주석' in df.columns:

C:\ProgramData\Anaconda3\lib\site-packages\dart_fss\fs.py in rename_columns(header, columns, lang, separate)
66 else:
67 key_num = regex_num.search(key).group(0)
---> 68 header_key_num = regex_num.search(header_key).group(0)
69 if key_num == header_key_num:
70 header_data = header[header_key]

AttributeError: 'NoneType' object has no attribute 'group'

Ubuntu temporary director issue.

안녕하세요. dart-fss를 우분투에 올려서 쓰려니 아래와 같이 에러가 나네요.

[Errno 2] No such file or directory: '/root/.config/arelle/cache/http/dart.fss.or.kr/Resource/Taxonomy/ifrs/2010-04-30/ifrs_for_dart/pre_dart_2010-04-30_role-D520000.xml.tmp' -> '/root/.config/arelle/cache/http/dart.fss.or.kr/Resource/Taxonomy/ifrs/2010-04-30/ifrs_for_dart/pre_dart_2010-04-30_role-D520000.xml'
Unsuccessful renaming of downloaded file to active file /root/.config/arelle/cache/http/dart.fss.or.kr/Resource/Taxonomy/ifrs/2010-04-30/ifrs_for_dart/pre_dart_2010-04-30_role-D520000.xml

`
xbrls = xbrl.get_xbrl_from_website(url=url)
File "/opt/conda/lib/python3.6/site-packages/dart_fss/xbrl.py", line 775, in get_xbrl_from_website
xbrl = get_xbrl_from_file(file)
File "/opt/conda/lib/python3.6/site-packages/dart_fss/xbrl.py", line 751, in get_xbrl_from_file
model_xbrl = Cntlr.Cntlr().modelManager.load(file_path)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelManager.py", line 158, in load
modelXbrl = ModelXbrl.load(self, filesource, nextaction, **kwargs)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelXbrl.py", line 69, in load
modelXbrl.modelDocument = ModelDocument.load(modelXbrl, url, base, isEntry=True, **kwargs)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 334, in load
modelDocument.instanceDiscover(rootNode)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 1146, in instanceDiscover
self.schemaLinkbaseRefsDiscover(xbrlElement)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 1009, in schemaLinkbaseRefsDiscover
self.schemaLinkbaseRefDiscover(element)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 1012, in schemaLinkbaseRefDiscover
return self.discoverHref(element, urlRewritePluginClass="ModelDocument.InstanceSchemaRefRewriter")
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 1132, in discoverHref
doc = _newDoc(self.modelXbrl, url, isDiscovered=not nonDTS, base=self.baseForElement(element), referringElement=element)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 327, in load
modelDocument.schemaDiscover(rootNode, isIncluded, namespace)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 872, in schemaDiscover
self.schemaDiscoverChildElements(rootElement)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 909, in schemaDiscoverChildElements
self.schemaDiscoverChildElements(modelObject)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 909, in schemaDiscoverChildElements
self.schemaDiscoverChildElements(modelObject)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 905, in schemaDiscoverChildElements
self.schemaLinkbaseRefDiscover(modelObject)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 1012, in schemaLinkbaseRefDiscover
return self.discoverHref(element, urlRewritePluginClass="ModelDocument.InstanceSchemaRefRewriter")
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 1132, in discoverHref
doc = _newDoc(self.modelXbrl, url, isDiscovered=not nonDTS, base=self.baseForElement(element), referringElement=element)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 332, in load
modelDocument.linkbaseDiscover(rootNode)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 1063, in linkbaseDiscover
href = self.discoverHref(linkElement, nonDTS=nonDTS)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 1132, in discoverHref
doc = _newDoc(self.modelXbrl, url, isDiscovered=not nonDTS, base=self.baseForElement(element), referringElement=element)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 327, in load
modelDocument.schemaDiscover(rootNode, isIncluded, namespace)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 872, in schemaDiscover
self.schemaDiscoverChildElements(rootElement)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 909, in schemaDiscoverChildElements
self.schemaDiscoverChildElements(modelObject)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 909, in schemaDiscoverChildElements
self.schemaDiscoverChildElements(modelObject)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 905, in schemaDiscoverChildElements
self.schemaLinkbaseRefDiscover(modelObject)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 1012, in schemaLinkbaseRefDiscover
return self.discoverHref(element, urlRewritePluginClass="ModelDocument.InstanceSchemaRefRewriter")
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 1132, in discoverHref
doc = _newDoc(self.modelXbrl, url, isDiscovered=not nonDTS, base=self.baseForElement(element), referringElement=element)
File "/opt/conda/lib/python3.6/site-packages/arelle/ModelDocument.py", line 110, in load
filepath = modelXbrl.modelManager.cntlr.webCache.getfilename(mappedUri, reload=reloadCache, checkModifiedTime=kwargs.get("checkModifiedTime",False))
File "/opt/conda/lib/python3.6/site-packages/arelle/WebCache.py", line 519, in getfilename
os.utime(filepath,(webFileTime,webFileTime))
FileNotFoundError: [Errno 2] No such file or directory

`

2015년 이전 XBRL을 이용한 주당이익 추출시 발생하는 단위 문제

2015년 이전 XBRL 데이터 추출시 주당이익이 크게 나오는 문제

image

  • XBRL 파일 내부의 RAW 데이터가 크게 작성되어 있으므로 데이터 자체에 문제가 있음.
  • DART 공시에는 화면에 표시되는 자리수를 조절하고 단위를 따로 표시함으로써 문제를 해결하고 있음

주상이익 XBRL RAW 데이터가 아래와 같으므로

<entity00356361:udf_IS_2015317134318420_EarningsPerShareAbstract contextRef="BPFY2012dFY_ifrs_ConsolidatedAndSeparateFinancialStatementsAxis_ifrs_ConsolidatedMember" decimals="-6" unitRef="KRW">20318000000</entity00356361:udf_IS_2015317134318420_EarningsPerShareAbstract> 

웹페이지 공시되는 데이터의 경우 decimals을 이용하여 6자를 제거하고 "보통주 기본 및 희석주당이익 (단위: 원)"로 표시함으로써 웹페이지에는 올바르게 표시되는 것으로 생각됨

RuntimeError

안녕하세요, 라이브러리 잘 사용하고 있습니다.
재무제표 추출 중 에러 발생해서 리포트 드립니다.
단위가 엔인 기업의 경우 예외처리가 되지 않은 것 같아요!

감사합니다.

RuntimeError: An error occurred while fetching or analyzing {'rcp_no': '20200120000265', 'corp_code': '01041828', 'corp_name': 'JTC', 'stock_code': '950170', 'corp_cls': 'K', 'report_nm': '[기재정정]사업보고서 (2019.02)', 'flr_nm': 'JTC', 'rcept_dt': '20200120', 'rm': '연'}.

extract 함수 처리 속도 문제

extract 함수 처리 속도가 CPU 성능에 따라 크게 영향 받음

  • AMD 3700: 약 10s/report
  • i5-4258U: 약 100s/report

extract 함수 처리시 처리방법에 관한 옵션 제공 필요

  • v0.3.4 이전의 extarct 함수 처리와 같은 방법의 추출 옵션 필요(XBRL 파일 대신 Web page 기반 추출)

분기보고서 로드 질문

안녕하세요, dart-fss 를 설치한 python 사용자입니다!

제가 xbrl데이터를 읽는데 어려움이 너무 많아서 구글링을 하던 중, 이런 좋은 패키지를 만들어 주셔서 감사합니다.

한편, 이 모듈의 예시를 실행시켜보니,

fs_quarter = samsung_electronics.get_financial_statement(start_dt='20190101', report_tp='quarter')

, 시간이 좀 오래 걸리는 것 같은데, 혹시 이렇게 하고 기다리는 것이 맞는지요?

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

재무상태표 일부 항목의 숫자가 다른 항목에 들어가는 것 같습니다.

안녕하세요.
우선 너무나 좋은 라이브러리를 만들어주셔서 감사합니다.
사용 도중에 재무제표 항목 숫자가 다른 항목에 들어가 있는 오류를 발견했습니다.
저는 '나이스정보통신' 종목으로 2012년부터 현재까지의 재무제표 출력을 했는데요.
몇개의 항목에서 숫자가 이어지지 않고 '0' 이나 빈 값으로 나오는 현상이 있습니다.

예를 들어 2017년도 재무제표를 보면(아래는 해당 라이브러리로 출력한 엑셀자료)
'장기매출채권 및 기타비유동채권' 에 '0' 으로 들어가있습니다.
그리고 그 아래에 '비유동 기타포괄손익-공정가치 측정 금융자산' 에 '5454178302' 으로 들어가 있는데요.
00264945_annual 2020-08-22 18-06-42

다트공시에 나와 있는 2017년도 재무제표를 보면 '장기매출채권 및 기타비유동채권' 항목의 숫자가
위에 언급한 '비유동 기타포괄손익-공정가치 측정 금융자산' 의 숫자인 것을 확인 할 수 있습니다.
2018 03 30 2020-08-22 18-10-45

다시한번 좋은 라이브러리 만들어주셔서 너무 감사드리고 이렇게 오류를 이슈 등록해서 죄송합니다.

Travis CI: TemporaryLocked

Travis CI를 이용한 단위 테스트시 아래와 같은 오류 발생

  • TemporaryLocked: 당일 비정상적인 IP변동이 감지되어 인증키 사용이 일시 중지되었습니다.

xbrl.get_xbrl_from_file error 문제

xbrl파일을 직접 호출할때 nontype error가 납니다.
dart에서 다운받을 수 있는 ifrs.zip형태나 xbrl개별 파일로 해도 마찬가진데
dart_fss 패키지에서 웹 url 접근 형식만 가능한지요, ⠋ XBRL Loading 시간이 너무 많이 걸리네요.
답변 부탁드립니다. 감사합니다.

에러나는 코드입니다.
import dart_fss
dart_fss.xbrl.get_xbrl_from_file("/content/20200331002351_ifrs.zip")

에러 로그
table = self.get_table_by_code(code)
---> 93 return table.to_DataFrame(lang=lang, show_class=False, show_concept=False, separator=False)
94
95 def get_document_information(self, lang: str = 'ko') -> DataFrame:

AttributeError: 'NoneType' object has no attribute 'to_DataFrame'

삼천리(코드: 00128555) 기업 XBRL 파일 Dataframe 변환 이슈

안녕하세요.
먼저 훌륭한 라이브러리를 만들어주셔서 유용하게 사용할 수 있게 된 점 감사합니다.
다름이 아니라 삼천리(코드: 00128555) 기업 보고서를 XBRL 파일로 받은 후 Dataframe으로 변환할 때 오류가 발생하여 이슈 라이징합니다.
이슈 상세 내용은 다음과 같습니다.

삼천리(코드: 00128555) 2018~2020년에 해당하는 분기/반기/사업 보고서를 받아서 Table클래스의 to_DataFrame메서드를 사용해 dataframe 형식으로 변환하던 중 다음과 같은 오류가 발생합니다.

  File "/venv/lib/python3.8/site-packages/dart_fss/xbrl/table.py", line 216, in to_DataFrame
    df.loc[idx] = r
  File "/venv/lib/python3.8/site-packages/pandas/core/indexing.py", line 670, in __setitem__
    iloc._setitem_with_indexer(indexer, value)
  File "/venv/lib/python3.8/site-packages/pandas/core/indexing.py", line 1626, in _setitem_with_indexer
    self._setitem_with_indexer_missing(indexer, value)
  File "/venv/lib/python3.8/site-packages/pandas/core/indexing.py", line 1858, in _setitem_with_indexer_missing
    raise ValueError("cannot set a row with mismatched columns")
ValueError: cannot set a row with mismatched columns

디버깅을 해보니 보고서에서 가져오는 column의 length와 row의 length가 일치하지 않더군요.
그래서 정상적으로 변환되는 보고서와 함께 데이터 비교를 해보았더니 정상적으로 불러오는 경우엔 column 값 중 ('별도재무제표'), ('연결재무제표') 항목의 값만 존재하고 나머지는 nan이 되도록 row data가 세팅되어있는 반면에,
삼천리(코드: 00128555) 의 케이스에서는 일단 row data 수와 column 필드의 개수가 맞지 않으며, 그로 인해 밀린 것인지 ('별도재무제표'), ('연결재무제표') 항목이 아닌 값에도 row data가 세팅되어 있습니다.

제 예상엔 계정 항목 중에 필터링 되어야 할 부분이 제대로 되지 않아 보입니다.
이 부분 한 번 검토해 주시면 감사하겠습니다. :)

손익계산서의 일부 값 누락

아래와 같은 코드를 실행하면,

import dart_fss as dart
dart.dart_set_api_key(api_key='~')
crp_list = dart.get_crp_list()
zezi = crp_list.find_by_name('한국제지')
fs_annual = zezi.get_financial_statement(start_dt='20140101', fs_tp='ci')

다음과 같이 당기순이익의 일부 값에 nan이 들어가 있는 것을 확인하실 수 있습니다.
image

그러나 DART에서 직접 확인해보면, 실제로는 값이 존재하더라구요.
image

혹시 제가 작성한 코드 상에 문제가 있을까요?
아니라면, 제가 버그를 해결하고 pull request를 올려보겠습니다.

좋은 라이브러리 개발해주셔서 감사합니다.

samsung.extract_fs(bgn_de='20150101') 오류

올려두신 예제와 똑같이 쳤는데 samsung.extract_fs(bgn_de='20150101') 에서 오류가 나네요.

JVMNotFoundException Traceback (most recent call last)
~\anaconda3\lib\site-packages\dart_fss\fs\extract.py in merge_fs(fs_df, label_df, report, fs_tp, lang, separate)
842 for compare_func in additional_comparison_function:
--> 843 ndata, nlabels = compare_func(column, df, ndf, label_df[tp], ndata, nlabels)
844

~\anaconda3\lib\site-packages\dart_fss_classifier\fs_search.py in compare_df_and_ndf_cnn(column, df, ndf, ldf, ndata, nlabels)
108 label = extract_account_title(ndf[ndf_label_column].iloc[idx])
--> 109 concept_id = guess_concept_id(label)
110 index = concept_none_data.get(concept_id)

~\anaconda3\lib\site-packages\dart_fss_classifier\fs_search.py in guess_concept_id(text)
39 """
---> 40 return guess(text)
41

~\anaconda3\lib\site-packages\dart_fss_classifier\classifier.py in guess(text)
29 """
---> 30 c = Classifier()
31 return c.guess(text)

~\anaconda3\lib\site-packages\dart_fss\utils\singleton.py in call(cls, *args, **kwargs)
7 if cls not in cls._instances:
----> 8 cls._instances[cls] = super(Singleton, cls).call(*args, **kwargs)
9 return cls._instances[cls]

~\anaconda3\lib\site-packages\dart_fss_classifier\classifier.py in init(self)
131 def init(self):
--> 132 self.konlpy = Kkma()
133 self._dataset = None

~\anaconda3\lib\site-packages\konlpy\tag_kkma.py in init(self, jvmpath, max_heap_size)
94 if not jpype.isJVMStarted():
---> 95 jvm.init_jvm(jvmpath, max_heap_size)
96

~\anaconda3\lib\site-packages\konlpy\jvm.py in init_jvm(jvmpath, max_heap_size)
54
---> 55 jvmpath = jvmpath or jpype.getDefaultJVMPath()
56

~\anaconda3\lib\site-packages\jpype_jvmfinder.py in getDefaultJVMPath()
73 finder = LinuxJVMFinder()
---> 74 return finder.get_jvm_path()
75

~\anaconda3\lib\site-packages\jpype_jvmfinder.py in get_jvm_path(self)
210 "environment variable properly."
--> 211 .format(self._libfile))
212

JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVA_HOME environment variable properly.

During handling of the above exception, another exception occurred:

RuntimeError Traceback (most recent call last)
in
----> 1 samsung.extract_fs(bgn_de='20150101')

~\anaconda3\lib\site-packages\dart_fss\corp\corp.py in extract_fs(self, bgn_de, end_de, fs_tp, separate, report_tp, lang, separator)
225
226 """
--> 227 return extract(self.corp_code, bgn_de, end_de, fs_tp, separate, report_tp, lang, separator)

~\anaconda3\lib\site-packages\dart_fss\fs\extract.py in extract(corp_code, bgn_de, end_de, fs_tp, separate, report_tp, lang, separator)
1078
1079 for report in tqdm(reports[next_index:], desc='Annual reports', unit='report'):
-> 1080 statements, label_df = merge_fs(statements, label_df, report, fs_tp=fs_tp, separate=separate, lang=lang)
1081
1082 if str_compare(report_tp, 'half') or str_compare(report_tp, 'quarter'):

~\anaconda3\lib\site-packages\dart_fss\fs\extract.py in merge_fs(fs_df, label_df, report, fs_tp, lang, separate)
848 except Exception:
849 msg = 'An error occurred while fetching or analyzing {}.'.format(report.to_dict())
--> 850 raise RuntimeError(msg)
851
852

RuntimeError: An error occurred while fetching or analyzing {'rcp_no': '20180402005019', 'corp_code': '00126380', 'corp_name': '삼성전자', 'stock_code': '005930', 'corp_cls': 'Y', 'report_nm': '사업보고서 (2017.12)', 'flr_nm': '삼성전자', 'rcept_dt': '20180402', 'rm': '연'}.

제무제표 축출시 부호(+,-), 일부항목 확인 부탁 드립니다.

안녕하세요 유용한 라이브러리를 만들어 주셔서 감사 드립니다.
제무제표를 분석을 위해 아래와 같이 장기간 데이터 축출해 보았는데요.
일부 항목 축출 및 금액 부호(+,-)가 다른 것 같아 확인 좀 부탁 드립니다.
GS리테일, 카카오(현금흐름표 부호 다름)에 대해 테스트 해보았습니다.
GS리테일 축출 자료, DART 조회 화면 정리해 보았습니다.

- 실행코드

GS리테일

corp_code = "007070"
fs = dart.fs.extract(corp_code=corp_code, bgn_de='20110101')
fs.save()

- 축출 데이터(dart-fss)

  1. 연결 포괄손익계산서
    image
  2. 연결 현금흐름표
    image

- DART자료

  1. 연결 포괄손익계산서
    image
  2. 연결 현금흐름표
    image
  • 카카오 부호 다름 예시(추가)
    image
    image

memory loss problem.

아래와 같이 여러 재무제표를 분석하려고 불러오는 경우 많은 메모리를 사용하게 되는 문제가 발생하고 있습니다.
짐작하기를 임시 다운로드 파일이 램에 남아있는것으로 예상되는데 혹시 해결 가능할까요?

for idx, item_name in enumerate(names):
    fs_quarter = dart_data.get_financial_statement(start_dt='20180101',
                                                               show_class=False,
                                                               show_concept=False,
                                                               separator=False,
                                                               lang='en')

docker에서 이상하게 작동.

안녕하세요. ShinhwaS입니다.
Docker에서 dataframe을 이상하게 계산하네요.
아래 코드를 수정한뒤 작동되네요.
for key in df_count.keys().tolist(): if regex_pass.search(' '.join(index[1])): pass elif df_count[key] <= 1: drop_columns.append(key)

for key, count in df_count.items(): if regex_pass.search(' '.join(key[1])): pass elif count <= 1: drop_columns.append(key)

업데이트하느라 수고하셨습니다.

14, 15년 이전의 재무제표 정보를 어떻게 가져올 수 있는건가요?

이 라이브러리를 쓰니까 bgn_de를 20141231 이전의 값도 넣을 수 있고 실제로 그 값을 가져올 수 있던데요.

https://opendart.fss.or.kr/disclosureinfo/fnltt/singl/main.do 와 같은데서 테스트할 때라던지
실제로 OPEN DART 자체가 제공하는 API 가이드라인에서는
(https://opendart.fss.or.kr/guide/detail.do?apiGrpCd=DS003&apiId=2019016)
2015년 이후부터의 추출 기능을 제공하는 것으로 보입니다.

그런데 본 라이브러리에서는 어떠한 원리(?)로 이 이상의 일을 해내시는지 원리가 궁금합니다.

하나금융지주 데이터 크롤링중 오류

좋은 모듈 잘 이용중입니다.

8월달에 삼성에스디에스 관련 오류 문의했던 사람인데 이번에는 하나금융지주 검색 중 문제가 발생하네요

아래와 같은 문제가 발생합니다.

image

사실 이외에도 오류가 발생하는 종목들을 예전에 몇 개 더 모아 놓기는 했는데 같은 이유로 발생하는건지는 잘 모르겠네요..

메리츠 화재 재무제표 금액에 대한 오류 문의

안녕하세요!
우선 좋은 라이브러리를 제공해주셔서 감사합니다.
일부 재무제표 값을 불러오는 중에 너무 크게 가져오는 값이 있어서 질문 드립니다.

메리츠 화재 재무제표를 불러왔는데

코드 내용
corp_cd = corp_list.find_by_stock_code("000060")
tmp = corp_cd.extract_fs(bgn_de='20140101', end_de='20141231', report_tp='annual', separate=False)

image

실제로는
image

실제로 몇개 회사의 재무제표 값이 과대로 추출되는 현상이 있는 것 같습니다.

일부 기업 재무상태표 가져오기 오류 추가

안녕하세요,
일부 기업의 재무상태표 가져오기에서 추가 오류가 발견되었습니다. ㅠㅠ
제가 전체 기업의 재무상태표를 모두 수집하다 보니 여러 유형의 오류를 발견하는 것 같습니다.

유형 1)

  • 별도 재무상태표 추출 시 발생
  • RuntimeError: An error occurred while fetching or analyzing {'crp_cls': 'K', 'crp_nm': '파나진', 'crp_cd': '046210', 'rpt_nm': '사업보고서 (2010.12)', 'rcp_no': '20110331002486', 'flr_nm': '파나진', 'rcp_dt': '20110331', 'rmk': '', 'pages': 'Not loaded'}.
  • 발생 기업: 파나진, 와이오엠, 한농화성, 한화갤러리아타임월드 등

유형 2)

  • 연결 재무상태표 추출 시 발생
  • RuntimeError: An error occurred while fetching or analyzing {'crp_cls': 'K', 'crp_nm': '뉴프라이드', 'crp_cd': '900100', 'rpt_nm': '사업보고서 (2017.12)', 'rcp_no': '20180430000663', 'flr_nm': '뉴프라이드', 'rcp_dt': '20180430', 'rmk': '연', 'xbrl_url': 'http://dart.fss.or.kr/pdf/download/ifrs.do?rcp_no=20180430000663&dcm_no=6135023&lang=ko', 'pages': 'Not loaded'}.
  • 발생 기업: 뉴프라이드, 대우건설, 영원무역 등

유형 3)

  • 연결 재무상태표 추출 시 발생
  • AttributeError: 'NoneType' object has no attribute 'columns'
  • 발생 기업: 두원석재, 나눔테크, 이노벡스 등

각 유형 별 상세 error 로그는 첨부 파일을 참조하십시오.

감사합니다.
파나진_error_log.txt
뉴프라이드_error_log.txt
두원석재_error_log.txt

유화증권에서 발생하는 오류

유화증권에서 재무제표 추출시 발생하는 오류

Annual reports: 43%|████▎ | 9/21 [02:19<03:04, 15.37s/report]Not Found
retrieving http://www.xbrl.or.kr/kr/fr/gaap/im/2008-12-31/kr-gaap-im-2008-12-31.xsd
Not Found
retrieving http://www.xbrl.or.kr/kr/fr/common/pte/2008-12-31/krfr-pte-2008-12-31.xsd
Not Found
retrieving http://www.xbrl.or.kr/kr/fr/common/fste/2008-12-31/krfr-fste-2008-12-31.xsd
Annual reports: 43%|████▎ | 9/21 [02:23<03:10, 15.91s/report]
Traceback (most recent call last):
File "C:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3418, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "", line 1, in
fs = corp_data.extract_fs(bgn_de = begin_date, separate = True, lang = 'ko')
File "C:\Anaconda3\lib\site-packages\dart_fss\corp\corp.py", line 233, in extract_fs
return extract(self.corp_code, bgn_de, end_de, fs_tp, separate, report_tp, lang, separator, dataset)
File "C:\Anaconda3\lib\site-packages\dart_fss\fs\extract.py", line 1294, in extract
raise e
File "C:\Anaconda3\lib\site-packages\dart_fss\fs\extract.py", line 1267, in extract
dataset=dataset)
File "C:\Anaconda3\lib\site-packages\dart_fss\fs\extract.py", line 1138, in analyze_report
show_concept=True, separator=separator)
File "C:\Anaconda3\lib\site-packages\dart_fss\fs\extract.py", line 1029, in analyze_xbrl
statements[tp] = func_fstp
File "C:\Anaconda3\lib\site-packages\dart_fss\fs\extract.py", line 990, in get_fs
data = xbrl.get_financial_statement(separate=separate)
File "C:\Anaconda3\lib\site-packages\dart_fss\xbrl\dart_xbrl.py", line 274, in get_financial_statement
return self._get_statement('dart-gcd_StatementOfFinancialPosition', separate=separate)
File "C:\Anaconda3\lib\site-packages\dart_fss\xbrl\dart_xbrl.py", line 249, in _get_statement
table = self.get_table_by_code('d999007')
File "C:\Anaconda3\lib\site-packages\dart_fss\xbrl\dart_xbrl.py", line 74, in get_table_by_code
if str_compare(table.code, code):
File "C:\Anaconda3\lib\site-packages\dart_fss\utils\string.py", line 29, in str_compare
str1 = str1.strip().lower()
AttributeError: ("'NoneType' object has no attribute 'strip'", "An error occurred while fetching or analyzing {'rcp_no': '20120229000184', 'corp_code': '00145190', 'corp_name': '유화증권', 'stock_code': '003460', 'corp_cls': 'Y', 'report_nm': '[기재정정]사업보고서 (2011.03)', 'flr_nm': '유화증권', 'rcept_dt': '20120229', 'rm': ''}.")

원인을 알 수 없는 에러 발생

fs_quarter = samsung_electronics.get_financial_statement(start_dt='20170101')
위의 함수에서 아래와 같은 에러가 발생했습니다.
exit 형의 error를 처음보는데 제가 설정함에 있어서 잘못한게 있을까요.

Traceback (most recent call last):
File "/home/jskim/home/money/financial_data_crawl_DART_master/dart_fss_test.py", line 51, in
fs_quarter = samsung_electronics.get_financial_statement(start_dt='20170101')
File "/home/jskim/.local/lib/python3.5/site-packages/dart_fss/crp.py", line 188, in get_financial_statement
separator=separator)
File "/home/jskim/.local/lib/python3.5/site-packages/dart_fss/fs.py", line 454, in search_financial_statement
last_xbrl = last_report.xbrl
File "/home/jskim/.local/lib/python3.5/site-packages/dart_fss/reports.py", line 147, in xbrl
self.load_xbrl()
File "/home/jskim/.local/lib/python3.5/site-packages/dart_fss/reports.py", line 226, in load_xbrl
xbrl = get_xbrl_from_website(self._xbrl_url)
File "/home/jskim/.local/lib/python3.5/site-packages/dart_fss/xbrl.py", line 771, in get_xbrl_from_website
file_path = download_file(url, path)
File "/home/jskim/.local/lib/python3.5/site-packages/dart_fss/_utils.py", line 28, in download_file
with requests.get(url, stream=True) as r:
AttributeError: exit

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.