質問

うれしい解析のためにシリーズのウェブページのためのデータをインポートしています。各タイプのウェブページで同じ種類のデータです。問題は、HTMLの各ページが異なるので、位置のデータが異なります。ここで問題となるのは、HTMLコードは十分ではないフォーマットを行い、れて使えなくなることもあり、XMLのようにパーサです。

これまでのサンプルデータのダウンロードして私が考えられることはい、定義のテンプレートするように、それぞれのページのように:

テンプレート:

<html>
...
  <tr><td>Table column that is missing a td 
      <td> Another table column</td></tr>
  <tr><td>$data_item_1$</td>
...
</html>

テンプレートB

<html>
...
  <ul><li>Yet another poorly formatted page <li>$data_item_1$</td></tr>
...
</html>

このようにしている必要がありシングルパーサのためのすべてのページとを比較し、各ページが、そのテンプレートを取得する $data_item_1$, $data_item_2$, など。もうすることができます。できるとお考えの簡単な解決法は?他の図書館です。

感謝

役に立ちましたか?

解決

あなたは、有効なページを取得するためにきちんとして、ページのソースを渡すことができます。あなたはきちんとここを見つけることができます 。 Tidyのは、プログラミング言語の多くのバインディングを持っています。あなたはこれをやった後、あなたのお気に入りのパーサ/コンテンツ抽出技術を使用することができます。

他のヒント

私は Htmlの敏捷性パックをお勧めします。それは、XPathを使用して選択のようにあなたのXMLを与えている間の悪い構造化されたHTMLで動作する能力を持っています。あなたはまだアイテムをテンプレートまたは異なる選択を使用して選択し、分析する必要がありますが、それは貧困層構造のこぶを過ぎてあなたを取得します。

こちらの 及びその他の回答、 美しいスープ 構文解析が可能か。

美しいスープはPythonのHTML/XMLパーサの設計のための短納期のプロジェクトとなった械による.次に、どのようにして、アジアで強力:

  1. 美しいスープなチョークまで悪いマークアップ等を行っています。で利回りの構文解析木を約も感覚としてのオリジナルの書きします。これらは、通常十分なデータを収集してください。
  2. 美しいスープを提供いくつかの簡単な方法とPythonicイディオムをナビゲートする際に手がかりを探しに、変更、木:ツールキット解析のための書類を抽出しで作られています。への思いをカスタムパーサ々な用途に対応できます。
  3. 美しいスープに自動的に変換受信文書のUnicodeへと発信文書をUTF-8です。かを考えるエンコーディングでない限り文書を指定していないエンコードの美しいスープができなautodetectます。その後すぐに指定のエンコーディングです。

美しいスープを解析しんだ、木のフォーカストラバーサルもいます。ができるんです"すべてのリンク"または"すべてのリンクのクラスexternalLink"または"すべてのリンクurlにマッチ"foo.com"、"見の表の見出しがその大胆なテキスト、そしている。"

html5lib のようにHTML5パーサを使用してください。

HTML Tidyのとは違って、これはブラウザが何に非常に近いエラー処理お渡しします。

C#のHTMLパーサを探していhref="https://stackoverflow.com/questions/100358/looking-for-c-html-parser/624410#624410"> に。

あなたは正規表現を抽出する必要がどのようなデータに応じてオプションであるかもしれません。 HTMLの多くは、実際によく構造ではなく、解析することは非常に難しいことができることを(あなたが発見したとして)私は多くの人が構造化データに正規表現を使用しての考えて身震いします知っているが、プレーンな事実がある。

ので、正規表現は非常にうまく働いていた私はあなたに同様の問題があったが、私の場合、私はHTMLを解析せずに、簡単に識別できたページからのデータの特定の一枚を望んでいます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top