問題タブ [scrapy-spider]
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.
python - Scrapy 拡張クラスのメンバー変数がスパイダーに表示されないが、パイプラインからアクセスできるのはなぜですか?
一般的なパス変数やその他のものを設定するために、スクレイピーで拡張機能を作成しました。したがって、出力パスが変更された場合でも、1 つのファイルのみを変更する必要があります。しかし、スパイダー内のそのパスにアクセスできません。
以下は拡張用のコードです。
上記の拡張機能は、次の設定で有効になっています
私のスパイダーコードは次のとおりです
SpiderCommon ファイルに次のものが含まれる場所
Common.output_dir の値はスパイダー内ではアクセスできませんが、パイプライン内ではアクセスできます。
スパイダーの上で実行しようとすると、[scrapy] DEBUG: Web service listen on 0.0.0.0:6080で停止し、リンクをクロールせずに完了します。理由は、Common.output_dirの値を取得していないこと です
python - スクレイピーシェルは異なる結果を返し、スクリプトは異なる結果を返します
この URL " http://www.funkytrunks.com/715-clearance "をスクレイピングしようとしています。
私のxpathは次のとおりです。
Scrapy Shell を使用すると 122 行が返され、ブラウザでは 135 行が返されました。それはかなり奇妙な問題です。これを使用してhtmlをチェックしresponse.body
、これをHTMLファイルに保存してブラウザで開き、xpathを実行したところ、完全に機能しました。
どんな助けでも感謝されるべきです。
python - Scrapy: クモは何も返さない
スパイダーを作成するのはこれが初めてで、私の努力にもかかわらず、csv エクスポートに何も返されません。私のコードは次のとおりです。
問題は、サイトを印刷すると、URL のリストが表示されることです。これで問題ありません。スクレイピーシェルでURLの1つで名前を検索すると、それが見つかります。問題は、すべてのリンクのすべての名前がクロールされたときです。「スクレイピークロールemag> emag.csv」で実行します
何が悪いのかヒントを教えてください。
python - Scrapy を使用した XHR の 413、リクエスト ライブラリで正常に動作
XML を使用するオンライン GIS システムからデータをスクレイピングしようとしています。ペイロードを正常に投稿し、正しい結果で HTTP 200 を返すリクエスト ライブラリを使用して簡単なスクリプトを作成することができましたが、リクエストをスクレイピーに移動すると、継続的に413
. Wireshark を使用して 2 つのリクエストを調べたところ、いくつかの違いが見つかりましたが、完全に理解しているかどうかはわかりません。
スクレイピーでのリクエストは次のようになります。
検査したパケットは次の場所にあります: http://justpaste.it/fxht
これには、リクエスト ライブラリを使用するときの HTTP リクエストと、スクレイピーな Request オブジェクトを生成するときの HTTP リクエストが含まれます。Scrapy を使用するとリクエストが大きくなるようです。リクエスト ライブラリを使用すると、2 番目の TCP セグメントが 2 番目の TCP セグメントよりも 21 バイト大きいようです。Content-Length ヘッダーは、スクレイピー リクエストでも 2 回設定されます。
スクレイピーでこの種の問題を経験した人はいますか? これまでに 413 スクレイピングを受けたことはありません。
python - 再帰的 Scrapy クロールの問題
特定のリンク構造を持つサイト (例: web.com) からコンテンツを抽出するために再帰スパイダーを実行しようとしています。例えば:
http://web.com/location/profile/12345678?qid=1403226397.5971&source=location&rank=21
http://web.com/location/profile/98765432?qid=1403366850.3991&source=場所&ランク=1
ご覧のとおり、URL の数値部分のみが変更されているため、この URL 構造に続くすべてのリンクをクロールして、itemX、itemY、itemZ を抽出する必要があります。
リンク構造を次のように正規表現に変換しました: '\d+?qid=\d+.\d+&source=location&rank=\d+'. Python-Scrapy コードは次のとおりですが、スパイダーを実行した後、スパイダーによって何も抽出されません。
python - 複数ページで再帰的にスクレイピー取得リンクを使用する
オンラインで見つけた次のコードを使用して、複数のページのリンクを再帰的にスクレイピングしています。すべてのページで必要なすべてのリンクを再帰的に返すことになっています。しかし、最大で 100 リンクしか取得できませんでした。どんなアドバイスも役に立ちます。
scrapy - スクレイピーで複数ドメインをクロールする方法
多数の異なるサイトをクロールする必要があるプロジェクトがあります。本文ページから項目を抽出する必要がないため、クロールするこのすべてのサイトで同じスパイダーを使用できます。私が考えたアプローチは、スパイダーファイルでクロールするドメインをパラメーター化し、ドメインを渡してスクレイピークロールコマンドを呼び出し、URL をパラメーターとして開始することです。これにより、すべてのサイトに対して単一のスパイダーを生成することを回避できます (サイトリストは時間)。アイデアは、scrapyd が実行されているサーバーにデプロイすることなので、いくつか質問があります。
- これは私が取ることができる最善のアプローチですか?
- その場合、異なる引数を渡して同じスパイダーを複数回スケジュールすると、同時実行性の問題は発生しますか?
- これが最善のアプローチではなく、サイトごとに 1 つのスパイダーを作成する方がよい場合は、プロジェクトを頻繁に更新する必要があります。プロジェクトの更新は実行中のスパイダーに影響しますか?