問題タブ [scrapy-pipeline]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
985 参照

python - スクレイピーを使用して毎晩何万もの URL をスクレイピングする方法

私はスクレイピーを使用していくつかの大きなブランドをスクレイピングし、サイトの販売データをインポートしています。現在、私は使用しています

アイテムローダーを使用して css/xpath ルールを指定し、パイプラインを使用してデータを csv に書き込みます。私が収集するデータは、元の価格、販売価格、色、サイズ、名前、画像の URL、およびブランドです。

私は約 10,000 の URL を持つ 1 つのマーチャントだけのためにスパイダーを作成しましたが、約 4 時間かかりました。

私の質問は、10,000 個の URL に対して 4 時間で十分に聞こえるか、それともそれよりも高速であるべきかということです。もしそうなら、それをスピードアップするために他に何をする必要がありますか。

テストするために、ローカルで SPLASH インスタンスを 1 つだけ使用しています。しかし、本番環境では 3 つの SPLASH インスタンスを使用する予定です。

ここでの主な問題は、約 125 の商人がいて、それぞれ平均 10,000 個の製品を扱っていることです。それらのいくつかには、スクレイピングする必要がある 15 万以上の URL があります。

サイトを更新するために、毎晩すべてのデータをスクレイピングする必要があります。私の 1 つのスパイダーは 10,000 の URL をスクレイピングするのに 4 時間かかるので、毎晩 125 x 10,000 の URL を達成することは有効な夢でさえあるのだろうかと思っています。

私の問題に対するあなたの経験豊富な意見に本当に感謝します。

0 投票する
0 に答える
449 参照

scrapy - Scrapy ログ HTTP エラーをデータベースまたはパイプラインに記録する

データベース (mySQL) でのクロールの全体像を取得しようとしています。

errbackしたがって、データベースにログを記録するには何かが必要です。

errbackパイプラインに渡すことは可能ですか? 現在、次のように設定しています。

応答 -> (アイテム) -> パイプライン

パイプラインが開始すると、そのクロールのエントリが作成されます ( を介してopen_spider)。次に、そのエントリのテーブル ID が変数としてパイプラインに格納されます。errbackこれが、スパイダー自体を介してログに記録できない理由です。

crawl_idまたは、 ID をパイプラインからスパイダーに渡す方法はありerrbackますか?