問題タブ [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.
django - Scrapy スパイダー内から既存の Django モデルを読み取る
と呼ばれる Django モデルに URL を配置するプロジェクトに取り組んでいUrlItems
ます。含まれている models.py ファイルUrlItems
はhome
アプリ内にあります。scrapy startproject scraper
models.py ファイルと同じディレクトリに入力しました。私の Django プロジェクト構造をよりよく理解するには、この画像を参照してください。
スクレーパーから新しい ものを作成する方法は理解していますが、スパイダーの関数内にある Django プロジェクトの既存UrlItems
のものを取得して反復処理することが私の目標である場合はどうなりますか? UrlItems
def start_requests(self)
私が試したこと:
1)この質問でマークされた解決策に従って、作成したものがDjangoItem
すでにUrlItem
ロードされているかどうかを確認しました。UrlItemDjangoItem.objects.all()
スパイダーの関数で使用しようとしましたが、この方法start_requests
では Django プロジェクトの を取得できないことに気付きましたUrlItem
。
2) スパイダーで、UrlItem
このように sをインポートしようとしたところ、from ...models import UrlItem
このエラーが発生しましValueError: attempted relative import beyond top-level package
た。
アップデート
いくつかの検討の後、JSON で既存の Django オブジェクトのリストを受け取るために、Scrapy スパイダーが Django アプリケーションの API にクエリを実行することになるかもしれません。
python-2.7 - 以下のPOSTメソッドはscrapyで機能していません
ヘッダー、クッキー、フォームデータ、本文も試しましたが、401 と 500 のステータス コードが返されました。このサイトでは、最初のページは GET メソッドにあり、HTML 応答を返し、それ以降のページは POST メソッドにあり、JSON 応答を返します。しかし、これらのステータスコードは無許可で届きますが、検索したところ、Web ページのヘッダーに CSRF トークンまたは認証トークンが見つかりませんでした。
python - Scrapy:応答をきれいにする方法は?
これが私のコードスニペットです。Scrapy を使用して Web サイトをスクレイピングし、インデックス作成のためにデータを Elasticsearch に保存しようとしています。
今私の問題は、「説明」フィールドに保存される値です。
空白、改行コード、「u」文字がたくさんあります....
このコードをさらに処理して、余分な空白、改行 (\n) コード、および「u」文字を含まない通常のテキストのみを含めるにはどうすればよいですか?
BeautifulSoupは Scrapy とうまく連携することを読みましたが、Scrapy と BeautifulSoup を統合する方法の例は見つかりませんでした。私は他の方法を使用することもできます。どんな助けでも大歓迎です。
ありがとう
python - DjangoとScrapyの関係アイテムはどのように保存されますか?
スクレイピーが保存され、アイテムがスパイダーに保存されているかどうかをどのように検出できますか? サイトからアイテムを取得してから、そのアイテムに関するコメントを取得しています。最初にアイテムを保存してから、コメントを保存します。しかし、yield の後にコードを書いていると、このエラーが発生します。
save() prohibited to prevent data loss due to unsaved related object ''.
そして、これは私のコードです
これが私のパイプラインです。
python - Scrapy - キーワードの一致が見つかった場合、データをデータベースにパイプします
簡単に言えば、Scrapy で Web データをスクレイピングしています。
キーワード/正規表現についてスクレイピングされたデータを分析し、一致した場合は、データをデータベースにパイプラインする必要があります。見つからない場合はドロップします。
私の質問は、Scrapy 内からこれを行う必要があるかどうかです。そうであれば、さらに調査するための高レベルの提案はありますか。
または、Scrapy の外部でこのタスクを実行する必要があります。
理想的には、Scrapy 内からすべてを実行したいと考えています。
ps私はScrapy/PythonとStackoverflowを初めて使用し、これを可能な限り調査しましたが、決定的な回答/ガイダンスは見つかりませんでした。
python - Scrapy プロジェクトで Django のモデルを使用する (パイプライン内)
これは以前にも尋ねられましたが、常に出てくる答えはDjangoItemを使用することです。ただし、github には次のように記載されています。
多くの場合、書き込みが集中するアプリケーション (Web クローラーなど) には適していません ... うまくスケーリングできない可能性があります
これが私の問題の核心です。私はpython manage.py シェルを実行し、 myapp.models import Model1 から実行するときと同じ方法で、django モデルを使用して対話したいと考えています。ここに見られるようなクエリを使用します。
相対インポートを試み、スクレイピー プロジェクト全体を django アプリ内に移動しましたが、どちらも役に立ちませんでした。
これを機能させるには、スクレイピー プロジェクトをどこに移動すればよいですか? スクレイピーパイプライン内のシェルで利用可能なすべてのメソッドを再作成/使用するにはどうすればよいですか?
前もって感謝します。