問題タブ [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.
python - スクレイピーmysqlは空の結果を返します
だから私の問題は、スクレイピングされた情報がデータベースに表示されないことです。
私のスパイダーは、.json ファイルなどの情報を正常に出力します。
パイプライン.py
そしてsettings.pyに追加しました
私のログにはこのエラーが表示されますが、これが表示されていても情報収集が機能していることがわかります。
そのため、結果はデータベースにインポートされません
scrapy - Scrapy: ダウンロードせずにカスタム フィルターからパイプラインにデータを送信する方法
最終的な URL が既にクロールされている場合を含め、すべてのリダイレクト パスをキャッチするために、カスタムの重複フィルターを作成しました。
では、RedirectionItem をパイプラインに直接送信するにはどうすればよいでしょうか。データを直接送信できるように、カスタム フィルターからパイプラインをインスタンス化する方法はありますか? または、カスタム スケジューラも作成して、そこからパイプラインを取得する必要がありますが、どのようにすればよいでしょうか?
scrapy - Scrapyを使用して画像をダウンロードするには?
私はスクレイピーの初心者です。ここから画像をダウンロードしようとしています。私は公式文書とこの記事に従っていました。
私のsettings.pyは次のようになります:
次のようになりitems.py
ます。
これらのファイルは両方とも良いと思います。しかし、画像を取得するための正しいスパイダーを書くことができません。画像の URL を取得できますが、を使用して画像を保存する方法がわかりませんimagePipeline
。
私のクモは次のようになります。
この記事に続いてスパイダーを書きました。しかし、私は何も得ていません。私は自分のスパイダーを実行していますscrapy crawl DownloadfirstImg -o img5.json
が、jsonも画像も取得していませんか?
URLがわかっている場合に画像を取得する方法に関するヘルプ。私もPythonを使ったことがないので、物事は私にとって非常に複雑に思えます。優れたチュートリアルへのリンクが役立つ場合があります。ティア
python - スクレイピーアイテムのエクスポートで毎回ファイルを上書きできるようにする方法は?
のリストで返される Web サイトをスクレイピングしていますurls
。例 -scrapy crawl xyz_spider -o urls.csv
urls.csv
ファイルに追加するのではなく、新しいファイルを作成したいのですが、今はまったく問題なく動作data
しています。有効にするためにできるパラメーターの受け渡しはありますか?
python - Scrapy アイテム パイプラインのデバッグ
スクレイピングされたアイテムを localhost で実行されている MySQL に永続化しようとしています。スパイダーが意図したとおりにサイトをクロールしてアイテムをスクレイピングしても、永続化のためのパイプライン オブジェクトは機能しません。アイテムをデータベースに保存しません。
pipelines.py ファイルの PersistMySQL クラス:
例外ブロックが出力されないため、クエリが有効であるように見えます。次のコードは、(他の設定と共に) settings.py にあります。
私はスクレイピー シェルを使用しており、非常に便利だと思いますが、シェルからアイテム パイプラインをデバッグする方法がないようで、MySQL エラーを出力する例外を使用しても役に立ちません。スパイダーはエラーなしで終了し、データベースに永続化する必要のある適切な数のアイテムがクロールされます。
scrapy - 同じまたは前のパイプラインの別のアイテムでスクレイピー パイプラインを待機させる
私の問題は次のとおりです。
3 つのアイテム パイプラインがあります
- アーカイブをダウンロードする 1 つの FilesPipeline
- アーカイブをアンパックする 1 つの ArchiveUnpackerPipeline
- これらのアーカイブのコンテンツへのシンボリック リンクを生成する 1 つの SymbolicLinkerPipeline
問題は次のとおりです。
Web サイトの構築方法により、異なるアイテムから同じアーカイブへのシンボリック リンクを生成する必要がある場合があります。すべてが順次実行された場合、次のようになります。
item_1
のダウンロードを開始しますarchive_1
item_1
の開梱を開始しますarchive_1
item_1
files_1
fromのシンボリックリンクを開始しますarchive_1
item_2
過去archive_1
にダウンロードされたものを確認し、返すitem_1
item_2
過去に開梱されたものを見てarchive_1
、返すitem_1
item_2
files_2
fromのシンボリックリンクを開始しますarchive_1
ただし、ダウンロードには時間がかかるため、同じファイルが 2 回ダウンロードされるなどのエラーが発生する可能性があります。
この問題に取り組むエレガントな方法はありますか? downloading
私の最初の推測では、各 download_url のステータスを、finished_downloading
、unpacking
、finished_unpacking
および twisted Deferred を使用して追跡するグローバル ディクショナリで動作する可能性があります。
python - Scrapy のみのキャッシュ イメージ
RFC2616 ポリシーを使用して解決策を見つけたと思いましたが、スクレイパーの実行時間をテストしても同じようです。だから私はデフォルトのポリシーに戻りました。
image_urls を
これで、アイテム image_urls に送信した URL をキャッシュするだけで済みます
私の理解では、指定することでポリシーを上書きできます
これを機能させるためのコードの提案はありますか?
python - データベース内の重複をチェックするFLask-SQLAlchemy
こんにちは、Python のスクレイプ ライブラリを使用してスパイダーを作成し、Web サイトからデータを抽出しています。私のパイプラインでは、Flask-SQLAlchemy を使用してスパイダーを構成し、スクレイピングしたデータを SQLite テーブルに追加します。スパイダーがテーブルに重複データを追加するのを防ぐ方法を見つけようとしているので、データベースにクエリを実行して、スパイダーがテーブルに追加しようとしている要素と同じ要素がテーブルに既に含まれているかどうかを確認します。もしそうなら、私はスパイダーにデータを追加させたくないのですが、単純に次の要素に移動します。これが私がこれまでに持っているコードです:
これはエラー raise TypeError("Boolean value of this clause is not defined") を返しますが、これは if duplicates: ステートメントを参照していると思いますが、なぜこれが機能しないのかわかりません。重複が存在するかどうかを確認したいだけで、存在する場合、スパイダーはそのデータ要素をテーブルに追加しないでください。このシステムを機能させる方法についての指針はありますか?
要求されたスタック トレースの詳細は次のとおりです。