クロールが初めてで、Scrapyを使用してCNBC.comのようなサイトを段階的にクロールすることが可能かどうかを知りたいですか?たとえば、今日、サイトからすべてのページをクロールした場合、明日からは、すべての古いページのクロールを避けるために、このサイトに新たに投稿されたページのみを収集したいと考えています。Scrapyを使用してWebサイトを段階的にクロールする
ありがとうございました。またはこれを入力します。
クロールが初めてで、Scrapyを使用してCNBC.comのようなサイトを段階的にクロールすることが可能かどうかを知りたいですか?たとえば、今日、サイトからすべてのページをクロールした場合、明日からは、すべての古いページのクロールを避けるために、このサイトに新たに投稿されたページのみを収集したいと考えています。Scrapyを使用してWebサイトを段階的にクロールする
ありがとうございました。またはこれを入力します。
短い回答:いいえ。
あなたができることは、記事IDまたは記事URLをファイルに書き込むことです。スクレイピング中に、IDまたはURLをファイルのレコードと一致させることができます。
ファイルを一度ロードして変数に割り当てることを忘れないでください。掻き取るときの反復中にはロードしないでください。
これはインクリメンタルクロールを行う一般的な方法ですか?私はこれがすべてではないにしても、ほとんどのWebクローラーにとって共通の作業です。そのような場合は、前に訪問したすべてのページを繰り返し訪問する必要があるたびに、 Googleもこのようにしていますか?ウェブ全体が非常に大きいという事実を考えると、ひどい仕事のように聞こえる。 – user697911
Googleは通常、ウェブサイトの所有者からサイトマップを取得します。ほとんどのクローラが行うことは、基本的にサイト上で見つかるすべてのリンクを通過することです。既にクロールされているかどうかは関係ありません。サイトが正しく行われている場合、記事ページには著者、公開タイムスタンプ、評価などのマイクロデータスニペット(vcardまたはそれが呼び出されたもの)があります。これはGoogle botの多くを助けます –
重複は後処理ステップとして発生しますそれらの大企業...クローラレベルではありません。これは、重複したコンテンツを属性付けしてペナルティを課す方法です。また、サイトでコンテンツがどのくらい速く変化するかに応じて、各URL /ドメインのリフレッシュ頻度が設定されます。彼らはまた、サイトマップについて気にしません:-)しかし、彼らはrobots.txtを尊重します。注釈は素晴らしいですし、業界をより質の高いマークアップに移行させ、より意味のあるコンテンツへの道を拓くために、しばらく推進されているかもしれないと思いますが、検索や独自のコンテンツの特定には必須ではありません。 – neverlastn
はい、実際には非常に簡単です。すべてのニュースサイトには、ホームページやカテゴリ(政治、エンターテインメントなど)のような非常に重要なインデックスページがいくつかあります。これらのページを少なくとも数分間は通過しない記事はありません。これらのページを毎分スキャンし、リンクだけを保存します。次に、あなたのデータベースにすでにあるものとの差分を行い、数日に数回、クロッシングを発行して、欠落しているリンクをすべて削ってください。非常に標準的なプラクティス。
あなたの人生を楽にしてくれるスクラピープラグインscrapy-deltafetchをお試しください。
ほとんどの場合、変更された内容を確認するためにすべてのページをスクラップする必要があります。しかし、いくつかのサイトでは、 'meta'タグから更新タイムスタンプを取得するために、各ドキュメントの最初のXバイトを取得して(サーバーが' Range'クエリをサポートしていると仮定して)離れてしまうかもしれません。 – halfer