2017-05-08 3 views
1

私は、SECのEDGARシステム上の10-Kレポート(会社のプロキシレポートなど)から、PythonのBeautifulSoupまたはHTMLParserを使用してテキスト情報のみを抽出しようとしています。しかし、私が使用しているパーサは、無意味な看板やタグの大部分、xbrlの情報など、txt形式のファイルにはうまくいきません。全く必要ではありません。しかし、意味のないタグの問題から多かれ少なかれ「htm」形式のファイルにパーサを直接適用すると、パーサーは比較的うまく動作しているようです。HTMLファイルから不要なタグと記号をすべて削除するにはどうすればよいですか?

"""for Python 3, from urllib.request import urlopen""" 
from urllib2 import urlopen 
from bs4 import BeautifulSoup 

"""for extracting text data only from txt format""" 
txt = urlopen("https://www.sec.gov/Archives/edgar/data/1660156/000166015616000019/0001660156-16-000019.txt") 
bs_txt = BeautifulSoup(txt.read()) 
bs_txt_text = bs_txt.get_text() 
len(bs_txt_text) # 400051 

"""for extracting text data only from htm format""" 
html = urlopen("https://www.sec.gov/Archives/edgar/data/1660156/000166015616000019/f201510kzec2_10k.htm") 
bs_html = BeautifulSoup(html.read()) 
bs_html_text = bs_html.get_text() 
len(bs_html_text) # 98042 

しかし、問題は私の質問があるので、私は、HTM 『もの「ではない上、txt'形式のファイル』に依存する立場にいるで、すべての無意味な兆候を取り除くに対処する方法はありますファイルからタグを抽出し、 'htm'ファイルから直接抽出したテキスト情報のみを抽出しますか?私はPythonを使ってパースするのは比較的新しいので、これについて何か考えているなら、大きな助けになるでしょう。前もって感謝します!

+0

これらのファイル( '.txt'と' .htm'の両方)は、HTML文書を内部に埋め込んだSGMLベースのものです。 '.txt'には多くのHTML文書が埋め込まれているようですが、' .htm'には1つしかありません。 HTMLパーサーの代わりにSGMLパーサーを試してみるとよいでしょう。 – user2357112

+0

または...明らかに、それはSGMLベースではなくXMLベースであると思われますか?開始点の近くに「.sgml」と書かれている部分はありますが、[はっきりとXMLです](https://en.wikipedia.org/wiki/XBRL)です。 – user2357112

+0

これをXMLパーサーで解析してみてください。 – user2357112

答えて

0

詳細サンプルウィキの例ページにHTML tag stripperがあります。 HTML文書を作成しようとせず、単にHTMLタグとスクリプトタグを探し出し、それらを取り除くだけです。

1

XBRLデータを扱う最良の方法は、オープンソースArelle(注:私はそれらと提携していません)または他の独自のエンジンなどのXBRLプロセッサを使用することです。

これで、抽象度の高いデータを見ることができます。 XBRLデータモデルの面では、あなたが質問に記述するプロセスは、分類学のテキストブロック(textBlockItemType)されている概念を探して

  1. を必要とします。
  2. これらの概念に対してインスタンスで報告されたファクトの値を取得します。
  3. さらに、それに関するいくつかのメタ情報を取得:(報告主体)など

XBRLプロセッサが保存されますテキストが何であるか、(XBRL期間)、(概念メタデータとドキュメント)を、 DTS全体を解決するだけでなく、低レベルの構文の複雑さに対処する努力をしています。

秒最も適切な方法は、おそらくXML Schemaのエンジンだけでなく、XQueryまたはXSLTで、XMLパーサーを使用することですが、あなたはどちらかにする必要がありますので、これは多くの作業が必要になります:で

  • 外観XMLスキーマ(XBRL分類スキーマ)ファイルを再帰的にナビゲートし、テキストブロックの概念を探したり、名前空間、リンクなどを処理します(XBRLプロセッサはあなたを盾にします)
  • 、 XMLファイル(例:https://www.sec.gov/Archives/edgar/data/1660156/000166015616000019/zeci-20151231.xml)はいくつかのハックを含んでいます(XML要素の末尾がTextBlockであるなど)。これは自分ではですsksこれはタクソノミーをバイパスするのでお勧めしません。

最後に、元の質問で示唆しているように、SECファイルのデータファイルではなくドキュメント形式のファイル(HTMLなど)を見ることもできますが、この場合は目的を破りますタグやコンテキストのおかげでコンピュータがデータを理解できるようにするXBRLを使用すると、テキストに関連する重要なコンテキスト情報が失われる可能性があります。テキスト/ 16進エディタを使用してスプレッドシートファイルを開くのと同じです。

もちろん、自然言語処理アルゴリズムを実行するなどの最後のアプローチを使用することを正当化できるユースケースがあります。私が言っているのは、これがXBRLの範囲外であるということだけです。

関連する問題