3

このようなリクエストでスプラッシュを使用したい

requests.post(myUrl,headers=myHeaders, data=payload, meta={
                                        'splash': {
                                            'endpoint': 'render.html',
                                            'args': {'wait': 1}
                                            }
                                        })

しかし、私はこのエラーがあります

TypeError: request() got an unexpected keyword argument 'meta'

これがscrapy.Requestで機能することは知っていますが、リクエストで使用したい

4

1 に答える 1

11

metaScrapyRequest固有であり、python-requests のリクエストには引数がないmetaため、TypeError例外です。

python-requests で Splash を使用するには、HTTP API のドキュメントをrender.html読んでください。

エンドポイントにGET リクエストを送信し、/render.htmlターゲット URL とwait引数をクエリ パラメータとして渡します。たとえば、次のようになります。

import requests
requests.get('http://localhost:8050/render.html',
             params={'url': 'http://www.example.com', 'wait': 2})

Splash でターゲット Web サイトに POST リクエストを発行する場合は、引数http_methodbody引数を使用します。

import requests
requests.get('http://localhost:8050/render.html',
              params={'url': 'http://httpbin.org/post',
                      'http_method': 'POST',
                      'body': 'a=b',
                      'wait': 2})

/render.htmlエンドポイントへの POST されたリクエストも許可します。

スプラッシュは HTTP API 経由で制御されます。以下のすべてのエンドポイントについて、パラメーターは GET 引数として送信するか、JSON にエンコードしてContent-Type: application/jsonヘッダーと共に POST することができます。

ただし、デフォルトのメソッドは引き続き GET です。http_methodターゲット Web サイトに POST を実行するには、引数を含める必要があります。

import requests

requests.post('http://localhost:8050/render.html',
              json={'url': 'http://httpbin.org/post',
                    'http_method': 'POST',
                    'body': 'a=b',
                    'wait': 2})
于 2016-05-06T10:42:08.407 に答える