次のケースを解決するのを手伝ってください:
典型的な分類されたカテゴリ ページを想像してみてください。商品一覧ページです。アイテムをクリックすると、内部ページに着陸します。現在、私のクローラーはこれらすべての URL をスクレイピングし、これらの URL をさらにスクレイピングしてアイテムの詳細を取得し、最初のシード URL が次のページであるかどうかを確認します。ある場合は、次のページに移動して同じことを行います。これらのアイテムをSQLデータベースに保存しています。
3 日後、シード URL に新しいアイテムがあり、新しいアイテムだけを破棄したいとします。考えられる解決策は次のとおりです。
各アイテムをスクレイピングするときに、データベースをチェックインして、URL が既にスクレイピングされているかどうかを確認します。もしそうなら、私は単に Scrapy にクロールを停止するように依頼します。問題 : 毎回データベースにクエリを実行したくありません。私のデータベースは非常に大きくなり、最終的にクロールが非常に遅くなります。
最後にスクレイピングした URL を保存して最初に渡すようにしていますが、この last_scraped_url を見つけた瞬間にクローラーを停止させるだけです。クロール URL の非同期性を考慮すると、シード URL から受け取った順序と同じ順序でスクレイピングされないため、不可能です。(整然とした方法ですべての方法を試しましたが、それはまったく不可能です)
誰でも他のアイデアを提案できますか? 私は過去3日間、それについて苦労してきました。
返信ありがとうございます。