5

このようにフォーマットされたページをスクレイピングできる、Objective-C 内または Objective-C からアクセス可能な既存のライブラリがあるかどうか疑問に思っています。具体的には、すべての日付と、各日付の横にあるすべてのテキストです。そうでない場合、これを行うための最良の方法は何ですか? 正規表現?NSStringこのためのメソッドがすでに組み込まれている可能性があると聞きました。これは本当ですか?

XML ファイルや API など、スクレイピングに代わるものがないか探し回っていました。私は API を見つけましたが、利用可能な唯一のクライアントは他の言語であり、コンテンツをページに投稿することはできますが、コンテンツを取得することはできないようです。

編集:したがって、これらのリンクでAPIに関する詳細情報を見つけました:

そして、HTML でエンコードされたテキストを返すこのリクエストを思いつくことができました(形式は XML ですが、ページのテキストなども含まれます»a href=。そうでない場合でも、これを解析するための推奨事項はありますか?

編集 2 :このドキュメント ページのおかげで、データを取得することができた最も簡単でクリーンな方法は、関連するセクションの生データ (ウィキ マークアップ内)を返すこの構築されたリンクを使用することです。ただし、それを解析する必要があると思いますが、それが実際に当てはまる場合は、記事全体よりもはるかに簡単になるはずです.

Objective-C での次のような wiki マークアップの解析に関する推奨事項はありますか?

==Events==
* [[710]] – [[Saracen]] invasion of [[Sardinia]].
*[[1275]] – Traditional founding of the city of [[Amsterdam]].
*[[1682]] – [[Philadelphia]], [[Pennsylvania]] is founded.

私が最終的に持ちたいのはNSDictionary、日付とそれに付随する情報のスニペットを格納する、または同様のコレクションだと思います。ありがとう!

4

7 に答える 7

3

ウィキペディアのページがプレーンテキストとして保存され、ユーザーがプレーンテキストとして入力することを考えると、そこから構造化されたデータ セットを取得することはできません。

于 2009-10-27T20:45:53.237 に答える
3

さまざまな方法で WP から多くのデータをスクレイピングしました。形式は、情報が含まれるサブドメインの種類や入力時期など、多くのことに依存します。本文は自由形式であり、簡単にスクレイピングする方法はありません。インフォボックスは、何年にもわたって変更された特別な WP 形式です。こするように設計されていません。

やや構造化された WP をサポートするデータベースがあります。

あなたの最善の戦略は、スクレイピングしたいドメインのウィキペディアンに連絡することです - 彼らはデータベースのフォーマットについて知っていて、助けてくれるかもしれません - 彼らはWPをセマンティックな形で見たいので、きっと助けたいと思うでしょう( DBPedia - http://dbpedia.org/Aboutなど)。

于 2009-10-27T21:07:59.273 に答える
2

Python はカウントされますか? ;) Objective-C からアクセスできます。また、スクレイピング用の優れたモジュールもあります。 Beautiful Soap や mechanize、lxml も検討できます。

于 2009-10-27T21:09:43.890 に答える
1

私は、混合 HTML データ ストリームで対象を絞ったデータを抽出するための正規表現を提案します。

電話には既に RegEx ライブラリがありますが、それらは隠されていますが、 RegexKitLiteを使用していくつかの簡単な呼び出しでそれらを公開できます (必ず下にスクロールしてライト バージョンを取得してください)。最終的には、正規表現を実行できるようにする NSString のいくつかの拡張機能を持つクラスになります。次に、2 つのキャプチャされた一致 (1 つは番号用、もう 1 つはコンテンツ用) と、キャプチャされていないいくつかの一致を含む正規表現を定義します。囲みタグと中間タグ。標準の RegEX の「ライト」バージョンですが、必要なほぼすべての機能をサポートしています。

API アプローチは有望ですが、未加工のマークアップを取得したら、そこからデータを解析するために、おそらく同様の正規表現アプローチを採用する必要があります。正規表現の複雑さとデータ転送時間を削減するのであれば、それでも意味があるかもしれませんが、両方のアプローチを組み合わせることができない理由はありません。

于 2009-10-27T20:45:33.923 に答える
0

次を使用してスクリーン スクレイピングを行う iPhone アプリがあります。

YQL を使用すると、DOM に対して XPATH クエリを使用して、Web から必要な情報を取得できます。

個人的には、正規表現を使用するよりもはるかに優れていると思います。繰り返しますが、私は非常に単純な正規表現しか知りません。

于 2009-10-28T10:54:24.160 に答える
0

それは間違いなく、どの言語でも行う方法ではありません。

オンラインでデータを適切に公開するサイトがあるとすれば、それはウィキペディアでしょう。

記事を XML、RDF、あるいは JSON として取得することを検討してください。

于 2009-10-27T20:09:30.940 に答える