1

私はWeb開発(および一般的な開発)の初心者であり、サードパーティのWebサイトからデータを取得するRailsアプリを構築しています。Nokogiriを使用して、関心のある特定のhtml要素を解析しています。これらの要素は、データベースに保存されています。

ただし、必要な情報の種類に気が変わった場合や、Webサイトがサイトを削除(または更新)した場合に備えて、スクレイピングしているページ全体のhtmlをバックアップとして保存したいと思います。

アーカイブされたhtmlを保存するためのベストプラクティスは何ですか?文字列として抽出してデータベースに入れたり、ログやテキストファイルに書き込んだりする必要がありますか?

編集:
私は少し明確にする必要があります。私は週に1万のWebサイトをクロールしており、必要なデータの種類を再定義する場合は、バックアップに1回限りアクセスするだけでよいと予想しています。

たとえば、国の人口データで国連データをクロールしていて、元々は年齢分布を調べていたが、後で性別分布も取得したいことに気付いた場合は、すべてのHTMLアーカイブに戻ってデータを取得したいと思います。アウト。私はこれがあまり(おそらく月に1〜3回)起こるとは予想していませんが、そうなると、10K〜100Kのリスト全体でそれを取得したいと思います。このタスクは約1万件のレコードを実行するのに数時間しかかからないので、各Webサイトのフェッチには最大で1秒かかると思います。バージョン管理機能は必要ありません。これが明らかになることを願っています。

4

2 に答える 2

1

この場合の「ベストプラクティス」はわかりませんが(プロジェクトの詳細によって異なります)、開始点として、URLの文字列フィールドとテキストフィールドを使用してモデルを作成することをお勧めします。 HTML自体の場合は、そこにページを保存します。同じHTMLを2回保存しないように、URLに一意性バリデーターを追加することができます。

次に、オプションでモデルメソッドを追加してHTMLテキストからnokogiriドキュメントを開始し、HTML文字列を(DB内の)「マスター」レコードとして使用し、必要に応じてその場でnokogiriドキュメントを生成できます。しかし、繰り返しになりますが、@ dave-newtonが指摘しているように、これの多くは、このHTMLで何をするかによって異なります。

于 2012-11-30T00:46:35.377 に答える
0

スクレイピングしているデータと同じDBのテーブルに保存することを強くお勧めします。なぜ機能するものを変更するのですか?通常どおりにすべてを保持するか、万が一の場合に備えてすべてを別のデータベースに書き込み、万が一の場合に備えて、スクレイピングされたデータをバックアップにリンクするためのフォームまたは参照を保持します。

于 2012-11-30T09:07:03.820 に答える