POST和GETing with grequests

时间:2016-10-11 20:33:13

标签: python python-3.x python-requests grequests

我正在使用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 个答案:

答案 0 :(得分:2)

首先登录会话,然后将其明确传递给您的grequest:

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

答案 1 :(得分: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)