2016-10-11 6 views
1

Я использую grequests для ускорения веб-сайтов. Однако мне также нужно зайти на сайт.POSTing и GETing с помощью grequests

До (только с использованием запросов) я мог бы сделать:

где headers мой User-Agent.

with requests.Session() as s: 
    s.headers.update(headers) 
    s.post(loginURL, files = data) 
    s.get(scrapeURL) 

Использование grequests я только смог пройти headers выполнив:

rs = (grequests.get(u, headers=header) for u in urls) 
response = grequests.map(rs) 

Есть в любом случае сделать POST в то же время, так что я могу войти? URL-адрес входа отличается от URL-адресов (я), которые я отказываюсь.

ответ

2

Вы можете передать в Session объекта точно так же, как заголовки:

with requests.Session() as s: 
    s.headers.update(headers) 
    s.post(loginURL, files = data) 
    s.get(scrapeURL) 


    rs = (grequests.get(u, headers=header, session=s) for u in urls) 
    response = grequests.map(rs) 
+1

Отлично!!. Я уверен, что это ошибка копирования и вставки с вашей стороны (поскольку эти опечатки были в моем вопросе тоже), но это должно быть 'request.Session()' и есть период в самом конце –

2

Первый Войти сеанс, а затем передать его в явном виде на ваш grequest так:

requests = [] 
for url in urls: 
    request = grequests.AsyncRequest(
     method='GET', 
     url=url, 
     session=session, 
    ) 
    requests.append(request)