1

ネットワーク上に、テーブル内の新しい行でほぼ毎分更新される html ファイルがあります。任意の時点で、ファイルには 15000 近くの行が含まれており、テーブル内のすべてのデータを含む MySQL テーブルを作成し、利用可能なデータからさらにいくつかのデータを計算します。

上記の HTML テーブルには、たとえば過去 3 日間の行が含まれています。それらすべてを mysql テーブルに保存し、1 時間ごとにテーブルを更新したい (これは cron 経由で実行できますか?)

DBへの接続には、正常に動作するものを使用しMySQLdbています。ただし、そうするためのベストプラクティスが何であるかはわかりません。を使用してデータをスクレイピングし、 をbs4使用してテーブルに接続できますMySQLdb。しかし、どのようにテーブルを更新すればよいでしょうか? リソースの使用量が最も少ないページをスクレイピングするには、どのロジックを使用すればよいですか?

私は結果を取得していません。スクレイピングして書いているだけです。

ポインタはありますか?

4

2 に答える 2

0

次のアプローチを採用できます。

説明のために、スクレイピングされたデータの最終的な送信先をmasterとします。次に、次の手順を採用できます。

  1. Web ページからデータをスクレイピングします。
  2. このスクレイピングされたデータを、MySQL の一時テーブル内に格納し、tempとします。
  3. EXCEPT 操作を実行して、 master内に存在するがtempには存在しない行のみを引き出します。
  4. 手順 3 で取得した行をマスターテーブル内に永続化します。

MySQL で SET 操作を実行する方法については、このリンクを参照してください。また、このすべてのロジックをストア プロシージャ内に配置し、処理するデータのセットを渡すことをお勧めします (この部分が MySQL で可能かどうかは不明です) アプローチにもう 1 つのステップを追加する- 以下の説明に基づいて、タイムスタンプベースの列を使用して、テーブルに配置する必要がある最新の行を決定できます。上記の SET ベースの操作のアプローチは、タイムスタンプ ベースの列がない場合にうまく機能します。

于 2013-07-30T07:06:58.367 に答える