このトピックは初めてですが、私の要件は、クローラーを使用してさまざまなタイプ (Html、pdf、txt) のドキュメントを解析することです。私の要件に使用するクローラーを提案し、チュートリアルまたはクローラーを使用してドキュメントを解析する方法の例を提供してください。
ありがとうございました。
このトピックは初めてですが、私の要件は、クローラーを使用してさまざまなタイプ (Html、pdf、txt) のドキュメントを解析することです。私の要件に使用するクローラーを提案し、チュートリアルまたはクローラーを使用してドキュメントを解析する方法の例を提供してください。
ありがとうございました。
これは非常に幅広い質問なので、私の答えも非常に幅広く、表面に触れるだけです。
(1) ソースからデータを抽出する、(2) 関連データを照合して解析する、という 2 つのステップにすべて集約されます。
ウェブからデータをスクレイピングする方法はたくさんあります。ソースがstaticかdynamicかに応じて、さまざまな戦略を使用できます。
データが静的ページにある場合は、すべてのページの HTML ソースをダウンロードして (手動ではなく自動で)、HTML ソースからデータを抽出できます。HTML ソースのダウンロードは、さまざまなツール (さまざまな言語で) を使用して行うことがwget
できcurl
ます。
データが動的なページにある場合 (たとえば、データを表示するためにデータベース クエリを実行する必要があるフォームの背後にデータがある場合) は、自動化された Web スクレイピングまたはテスト ツールを使用することをお勧めします。これらの多くがあります。この自動データ収集リソースのリストを参照してください[1]。このようなツールを使用すると、データをすぐに抽出できます。通常、HTML ソースを明示的にディスクに保存してから解析するという中間ステップはありません。
まず、Tabulaを試してください。これは、PDF から表形式のデータを視覚的に抽出できるオープン ソースの Web アプリケーションです。
PDF のデータが単純な表にきちんと構造化されていない場合、またはデータが多すぎて表を作成できない場合は、*NIX コマンドライン ツールpdftotext
を使用して、Portable Document Format (PDF) ファイルをプレーン テキストに変換することをお勧めします。 .
コマンドman pdftotext
を使用して、ツールのマニュアル ページを表示します。便利なオプションの 1 つは-layout
、テキスト出力で元のレイアウトを維持しようとするオプションです。デフォルトのオプションは、ドキュメントの物理的なレイアウトを「元に戻す」ことであり、代わりにテキストを読み上げ順に出力します。
テキストへの変換にはxls2textを試してください。
データの解析には、多くのオプションもあります。たとえば、HTML ソースを扱う場合は と の組み合わせ、または Python ライブラリ` を使用できますが、これらのオプションに限定されず、使い慣れた言語やツールを使用できgrep
ますsed
。BeautifulSoup
データを解析して抽出するときは、基本的にパターン マッチングを行っています。目的のデータを簡単に分離できる固有のパターンを探します。
もちろん、1 つの方法は正規表現です。という名前のテキスト ファイルから電子メール アドレスを抽出したいとしますfile
。
egrep -io "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b" file
上記のコマンドは、電子メール アドレスを出力します [2]。それらをファイルに保存する場合> filename
は、コマンドの末尾に追加します。
[1] このリストは完全なリストではないことに注意してください。多くのオプションがありません。
[2] この正規表現は絶対的なものではありません。カバーできない極端なケースがいくつかあります。別の方法として、私が作成したスクリプトを使用することもできます。これは、テキスト ファイルから電子メール アドレスを抽出するのにはるかに適しています。電子メール アドレスの検索がより正確になり、使いやすくなり、一度に複数のファイルを渡すことができます。ここからアクセスできます: https://gist.github.com/dideler/5219706