1

Webサイトからすべての最新ニュースをWebスクレイピングする機能があります(約10ニュースで、ニュースの数はそのWebサイトまでです)。ニュースは年代順であることに注意してください。

たとえば、昨日 10 件のニュースを取得し、データベースに保存しました。今日は 10 件のニュースを受け取りましたが、昨日から入手できなかったニュースが 3 件あります (7 件は同じままで、3 件は新しいニュースです)。

私の現在のアプローチは、古いニュース (7 つのニュースの 1 つ目) が見つかるまで各ニュースを抽出することです。その後、抽出を停止"lastUpdateDate"し、古いニュースのフィールドのみを更新し、新しいニュースをデータベースに追加します。このアプローチはなんとなく複雑で時間がかかると思います。

実際には、同じコンテンツ構造 ( Moodle) を持つ 20 の Web サイトからニュースを取得しているため、各リクエストは約 2 分かかりますが、これは無料のホストではサポートされていません。

すべてのニュースを削除してから、最初からすべてを抽出した方がよいでしょうか (これにより、実際にはデータベース内の ID 番号が膨大に増加します)。

4

2 に答える 2

2

まず、Web サイトに API が公開されているかどうかを確認します。ある場合は、それを使用します。

次に、ウェブサイトの利用規約を確認してください。これにより、ウェブサイトのスクレイピングが明確かつ明示的に禁止されている場合があります。

3 番目に、ページのフェッチとページからのコンテンツの抽出の両方を処理する、選択したプログラミング言語のモジュールを見てください。Perl では、WWW::MechanizeまたはWeb::Scraperで開始します。

何をするにしても、StackOverflow に投稿する多くの人が陥る罠にはまらないでください: Web ページを取得し、コンテンツ自体を解析しようとします。ほとんどの場合、正規表現を使用しますが、これは仕事には不適切なツールです。SO タグを参照して、既存のツールを使用する代わりに独自の HTML 解析システムを展開しようとした人々からの悲報を聞いてください。

于 2012-12-17T14:31:16.737 に答える
0

ユーザーに古いニュースを表示するかどうかは、要件に依存します。

スクレイピングのために、これらのニュース Web サイトからデータを取得してデータベースに保存する cron ジョブ用のカスタム ローカル スクリプトを作成できます。

件名が既に存在するかどうかを確認することもできます。

最後に、すべてのデータベース フィードを表示するカスタム ニュース ブロックを作成します。

于 2012-12-18T05:51:09.300 に答える