使用 grequests 发布和获取

POSTing and GETing with grequests

我正在使用 grequests 来更快地对网站进行 scape。但是,我还需要登录该网站。

之前(仅使用请求)我可以做:

其中 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(s) 不同。

首先登录会话,然后将其显式传递给您的 grequest,如下所示:

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

您可以传入与 headers 完全相同的 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)