1

scrapy shellを使用し、基本認証資格情報を必要とするURLのテスト応答データを使用します。私はscrapyシェルのドキュメントをチェックしようとしましたが、そこにそれを見つけることができませんでした。URLと基本認証資格情報を持つscrapyシェルはどのように使用できますか?

私はscrapy shell 'http://user:[email protected]'で試しましたが、うまくいきませんでした。 誰かが私がそれをどのように達成できるか知っていますか?

+0

あなたはスパイダーの中でどうやってログインしていますか? – eLRuLL

+0

スパイダーで[HttpAuthMiddleware](https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware)を使用していますが、スパイダーの代わりにシェルを使用したいと思います。 – Rohanil

+0

プロジェクトディレクトリからシェルコマンドを実行する限り、動作します。また、ミドルウェアでは、URLに 'user:password'は必要ありません。中程度のものがあなたのために処理します。 –

答えて

4

あなただけのシェルを使用する場合、あなたはこのような何か行うことができます:fetchは、シェルセッションを更新するために、現在の要求を使用して

>> from w3lib.http import basic_auth_header 
>> from scrapy import Request 
>> auth = basic_auth_header(your_user, your_password) 
>> req = Request(url="http://example.com", headers={'Authorization': auth}) 
>> fetch(req) 

$ scrapy shell 

とシェル内部を。

+0

ありがとうございます。出来た。 – Rohanil

+0

正直言って私は 'user:pass'をシェルに直接URLに追加するという考えは面白いですね、私は提案するか、' scrapy'に実装しようとします – eLRuLL

+1

はすぐに対処されるようです:https: //github.com/scrapy/scrapy/pull/1466 – eLRuLL

1

ありありhttpauth middlewareです。

ていることを確認しHTTPAuthMiddlewareは、単に定義する設定で有効になっている:あなたのクモのクラス変数として

class MySpider(CrawSpider): 
    http_user = 'username' 
    http_pass = 'password' 
    ... 

また、設定でミドルウェアが有効になっている場合は、URLにログイン資格情報を指定する必要はありません。

+0

スパイダーの代わりにシェルを使用したい – Rohanil

+0

シェルはプロジェクトリソースを使用します。 –

+1

@Rohanil try 'scrapy shell' http://www.example.org''にアクセスし、設定にミドルウェアが含まれていることを確認してください。また、クラス名としてログイン名を指定してください。 –

関連する問題