2009-10-06 2 views
9

HTML(XHTML有効)ページからいくつかのコンテンツを取得する必要があります。私はカールを使ってページをつかみ、それをメモリに保存します。Cを使ってhtmlを解析する

私はPCREライブラリでregexを使用するというアイデアを持っていましたが、単にCでそれを使用した例が見つかりませんでした。次に、HTMLパーサーを見てみました。私が見つけたのは、HTMLparserと呼ばれるlibxml用のぎっしりとした文書化されたモジュールでした。

代替手段はありますか?そうでない場合は、私がすでに見つけたものの例?

+0

正規表現でHTMLを解析に対する警告に必須のリンク:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454 #1732454 – moopet

+0

次のリンクを参照してください。私はWindowsプラットフォーム用のlibxml2 Cライブラリを使用してソリューション全体を書きました。 http://stackoverflow.com/questions/5465965/how-can-libxml2-be-used-to-parse-data-from-xml/38826052#38826052 –

答えて

4

これを行うには、HTMLを使いたいと思っています。 Lib curlページにはあなたのためのいくつかのソースコードがあります。 DOMツリーを走査する文書。 xmlパーサは必要ありません。ひどく整形されたhtmlで失敗しません。

http://curl.haxx.se/libcurl/c/htmltidy.html

+0

を参照してくださいこれは私が実装したものです。私は空腹のxmlパーサを取り出してテキストの1行を取得する必要はないと感じました。ありがとう –

2

Cを使用してXMLを解析する場合は、LibXMLライブラリを使用することをお勧めします。メインページはhttp://xmlsoft.org/です。ダウンロードに加えて、明示的にcode examplesがあり、具体的にはparsingの処理方法が示されています。私はMacとWindows用にプリコンパイルされたバージョンを入手できるという事実を知っています。ほとんどのLinuxとBSDディストリビューションには既に含まれています。

+1

良い選択だが、それは壊れたhtmlで窒息するので、最初にlibtidyで実行します。 –

6

私はlibhtmltidy + expatまたはlibxmlのようなxmlパーサを使用します。あなたが探しているものによって異なります。

+0

Reader情報のために... HTMLパーサーは、HTML(Hypertext Markup Language)解析用のソフトウェアです。彼らは2つの主な目的を持っています。 HTMLトラバーサル: "HTML文字列コード"に簡単にアクセスして変更できるようにするプログラマのためのインターフェイスを提供します。標準的な例:DOMパーサー。 HTMLクリーン:無効なHTMLを修正し、結果のマークアップのレイアウトとインデントのスタイルを改善します。標準的な例:HTML Tidy。 –

+0

https://en.wikipedia.org/wiki/Comparison_of_HTML_parsersページ –

0

Googleは最近、特にHTML、HTML5の構文解析のための純粋なC99ライブラリを作成しました。どのCプログラムでも使いやすく、積極的に開発しました。

https://github.com/google/gumbo-parser

+0

ほとんどの変更は2年前から、HTML5標準は既に定義されていますが、コードは少し古いですか? –