私は構造化された方法で特定のWikipediaのコンテンツを解析しようとしています。ここでは例のページです:PHPでWikipediaのマークアップを解析する最良の方法は何ですか?
http://en.wikipedia.org/wiki/Polar_bear
私はいくつかの成功を持っています。私はこのページが "specie"ページであることを知ることができ、Taxobox(右側)の情報を構造体に解析することもできます。ここまでは順調ですね。
しかし、私はまた、テキストの段落を解析しようとしています。これらはWiki形式またはHTML形式でAPIによって返されますが、私は現在Wiki形式で作業しています。
私はこれらの段落を読むことができますが、私は最終的に私のアプリにそれを表示する必要があり、Wikiマークアップの意味がないので、それらを特定の方法で "クリーン"したいと思います。たとえば、すべての画像を削除したいとします。これは[[Image:]]ブロックを除外することでかなり簡単です。このブロック全体は、文を破る取り外し
- | | {略称=}に680 | |キロ| 350 {変換}
:まだ私は単にような、削除することができないブロックも存在します。特別な意味を持つこのような表記法は数十種類あります。私はこのすべてを処理するために100個の正規表現を書くことを避け、これをよりスマートな方法でどのように解析できるかを見ていきたいと思います。
私のジレンマは以下の通りです:
- 私は が不要な要素を削除する作業の多くを持っているだけでなく、やる テンプレートを「まねる」のだ半構造解析の私の現在のパスを続けることができますレンダリングする必要があります。
- それとも、私がレンダリングされたHTML出力を開始し、それを解析し、私の心配は、それが理想的に構造化された方法で
を解析するために、同じように壊れやすく、複雑だということである可能性があり、この問題を解決するためのライブラリーもありますしかし、私はまだこの仕事までのものは見つけていません。私はDBPediaのような構造化Wikipediaデータベースも見てきましたが、それらは既に私が持っているものと同じ構造をしているだけで、Wikiテキスト自体に構造を提供していません。
http://stackoverflow.com/questions/4839938/how-to-parse-wikipedia-xml-with-php – sjngm
の複製である可能性があります。mediawikiパーサーの仕組みを確認してください。http:// svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/includes/parser/Parser.php – Maerlyn
@sjngm。重複ではありません。私はウィキペディアのページの構造化されたデータを解析する方法を知っていますが、私は構造化されていない部分について話しています。 – Ferdy