2016-05-06 2 views
0

Я хочу использовать всплеск запросов, что-то вроде этогоКак использовать Splash с python-запросами?

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, но я хочу использовать с входящими запросами

ответ

5

meta является Scrapy Request -специфических и python-requests' request не имеют meta аргумента, следовательно, TypeError исключение.

Чтобы использовать Splash с запросами python, прочитайте HTTP API docs, especially on render.html, так как это то, что вы хотите использовать.

Вы хотите получить запрос GET на конечную точку /render.html и передать целевой URL, а аргумент wait в качестве параметра запроса, например. как это:

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

Если вы хотите Всплеск выдать запрос POST на целевом сайте, используйте http_method и body аргументы:

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 также allows POST-ed requests to the endpoint:

Всплеск контролируется через HTTP API. Для всех конечных точек ниже параметры могут быть отправлены либо как аргументы GET, либо закодированы в JSON и POSTed с заголовком Content-Type: application/json.

но метод по умолчанию все еще GET. Для того, чтобы сделать POST на целевой сайт, вам все еще нужно включить http_method аргумент:

import requests 

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

Но я должен отправить запрос POST – parik

+0

ли вы имеете в виду, что Всплеск должен выдать запрос POST на целевом сайте? Если да, есть ['http_method' и' body' аргументы] (https://splash.readthedocs.io/en/stable/api.html#render-html), доступные с помощью '/ render.html' –

+0

мне нужно «ЖДИТЕ» в минуту мои запросы POST – parik