grequests模組的使用

2022-09-07 04:54:09 字數 3141 閱讀 9285

使用場景:1) 爬蟲設定ip**池時驗證ip是否有效 2)進行壓測時,進行批量請求等等場景

grequests 利用 requests和gevent庫,做了乙個簡單封裝,使用起來非常方便。

另外,由於grequests底層使用的是requests,因此它支援

get,options, head, post, put, delete 等各種http method

所以以下的任務請求都是支援的

grequests.post(url, json=)

grequests.delete(url)

**如下:

)實際操作中,也可以自定義返回的結果

修改grequests原始碼檔案:

例如:新增extract_item() 函式合修改map()函式

def

extract_item

(request)

:"""

提取request的內容

:param request:

:return:

"""item =

dict()

item[

"url"

]= request.url

item[

"text"

]= request.response.text or

"" item[

"status_code"

]= request.response.status_code or

0return item

defmap

(requests, stream=

false

, size=

none

, exception_handler=

none

, gtimeout=

none):

"""concurrently converts a list of requests to responses.

:param requests: a collection of request objects.

:param stream: if true, the content will not be downloaded immediately.

:param size: specifies the number of requests to make at a time. if none, no throttling occurs.

:param exception_handler: callback function, called when exception occured. params: request, exception

:param gtimeout: gevent joinall timeout in seconds. (note: unrelated to requests timeout)

"""requests =

list

(requests)

pool = pool(size)

if size else

none

jobs =

[send(r, pool, stream=stream)

for r in requests]

gevent.joinall(jobs, timeout=gtimeout)

ret =

for request in requests:

if request.response is

notnone:)

elif exception_handler and

hasattr

(request,

'exception'):

)else

:none

)yield ret

可以直接呼叫:

import grequests

urls =

['',''

,'',''

,'',''

]rs =

(grequests.get(u)

for u in urls)

response_list = grequests.

map(rs, gtimeout=10)

for response in

next

(response_list)

:print

(response)

支援事件鉤子

grequests模組的使用

使用場景 1 爬蟲設定ip 池時驗證ip是否有效 2 進行壓測時,進行批量請求等等場景 grequests 利用 requests和gevent庫,做了乙個簡單封裝,使用起來非常方便。get,options,head,post,put,delete 等各種http method 所以以下的任務請求都...

Python使用grequests併發傳送請求

參考博文 requests是python傳送介面請求非常好用的乙個三方庫,由k神編寫,簡單,方便上手快。但是requests傳送請求是序列的,即阻塞的。傳送完一條請求才能傳送另一條請求。為了提公升測試效率,一般我們需要並行傳送請求。這裡可以使用多執行緒,或者協程,gevent或者aiohttp,然而...

模組的使用

一 什麼是模組?模組是一系列功能的集合體。模組的分類 自定義模組 第三方模組 內建模組 c語言寫的一些功能 常見的模組形式 1 乙個module.py檔案就是乙個模組,檔名是module.py,而模組名是module。2 乙個包含有 init py檔案的資料夾也是模組。3 已被編譯為共享庫或dll或...