最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python grequests模塊使用場景及代碼實例

 更新時間:2020年08月10日 10:10:11   作者:Yi_warmth  
這篇文章主要介紹了Python grequests模塊使用場景及代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

使用場景:

1) 爬蟲設(shè)置ip代理池時驗證ip是否有效

2)進行壓測時,進行批量請求等等場景

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

grequests.map(requests, stream=False, size=None, exception_handler=None, gtimeout=None)

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

GET,OPTIONS, HEAD, POST, PUT, DELETE 等各種http method

所以以下的任務(wù)請求都是支持的

grequests.post(url, json={“name”:“zhangsan”})
grequests.delete(url)

代碼如下:

import grequests

urls = [
  'http://www.baidu.com',
  'http://www.qq.com',
  'http://www.163.com',
  'http://www.zhihu.com',
  'http://www.toutiao.com',
  'http://www.douban.com'
]
rs = (grequests.get(u) for u in urls)
print(grequests.map(rs))  # [<Response [200]>, None, <Response [200]>, None, None, <Response [418]>]
def exception_handler(request, exception):
  print("Request failed")
reqs = [
  grequests.get('http://httpbin.org/delay/1', timeout=0.001),
  grequests.get('http://fakedomain/'),
  grequests.get('http://httpbin.org/status/500')
]
print(grequests.map(reqs, exception_handler=exception_handler))

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

修改grequests源碼文件:

例如:

新增extract_item() 函數(shù)合修改map()函數(shù)

def extract_item(request):
  """
  提取request的內(nèi)容
  :param request:
  :return:
  """
  item = dict()
  item["url"] = request.url
  item["text"] = request.response.text or ""
  item["status_code"] = request.response.status_code or 0
  return item

def map(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 not None:
      ret.append(extract_item(request))
    elif exception_handler and hasattr(request, 'exception'):
      ret.append(exception_handler(request, request.exception))
    else:
      ret.append(None)

  yield ret

可以直接調(diào)用:

import grequests
urls = [
  'http://www.baidu.com',
  'http://www.qq.com',
  'http://www.163.com',
  'http://www.zhihu.com',
  'http://www.toutiao.com',
  'http://www.douban.com'
]
rs = (grequests.get(u) for u in urls)
response_list = grequests.map(rs, gtimeout=10)
for response in next(response_list):
  print(response)

支持事件鉤子

def print_url(r, *args, **kwargs):
print(r.url)

url = “http://www.baidu.com”
res = requests.get(url, hooks={“response”: print_url})
tasks = []
req = grequests.get(url, callback=print_url)
tasks.append(req)
ress = grequests.map(tasks)
print(ress)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python實現(xiàn)狄克斯特拉算法

    python實現(xiàn)狄克斯特拉算法

    這篇文章主要為大家詳細介紹了python實現(xiàn)狄克斯特拉算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Python基于paramiko庫操作遠程服務(wù)器的實現(xiàn)

    Python基于paramiko庫操作遠程服務(wù)器的實現(xiàn)

    本文主要介紹了使用Python的Paramiko庫來操作遠程服務(wù)器,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • 使用python計算三角形的斜邊例子

    使用python計算三角形的斜邊例子

    這篇文章主要介紹了使用python計算三角形的斜邊例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python 實現(xiàn)王者榮耀中的敏感詞過濾示例

    Python 實現(xiàn)王者榮耀中的敏感詞過濾示例

    今天小編就為大家分享一篇Python 實現(xiàn)王者榮耀中的敏感詞過濾示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python利用PaddleOCR制作個搜題小工具

    Python利用PaddleOCR制作個搜題小工具

    PaddleOCR是一個基于百度飛槳的OCR工具庫,單模型支持中英文數(shù)字組合識別、豎排文本識別、長文本識別。本文將利用PaddleOCR開發(fā)一個搜題小工具,感興趣的可以了解一下
    2022-06-06
  • 在Docker上部署Python的Flask框架的教程

    在Docker上部署Python的Flask框架的教程

    這篇文章主要介紹了在Docker上部署Python的Flask框架的教程,包括Docker容器內(nèi)外的網(wǎng)絡(luò)通信等,需要的朋友可以參考下
    2015-04-04
  • python定時任務(wù)schedule庫用法詳細講解

    python定時任務(wù)schedule庫用法詳細講解

    python中有一個輕量級的定時任務(wù)調(diào)度的庫schedule,下面這篇文章主要給大家介紹了關(guān)于python定時任務(wù)schedule庫用法的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • Python寫一個字符串?dāng)?shù)字后綴部分的遞增函數(shù)

    Python寫一個字符串?dāng)?shù)字后綴部分的遞增函數(shù)

    這篇文章主要介紹了Python寫一個字符串?dāng)?shù)字后綴部分的遞增函數(shù),寫函數(shù)之前需要Python處理重名字符串,添加或遞增數(shù)字字符串后綴,下面具體過程,需要的小伙伴可以參考一下
    2022-03-03
  • Python pip安裝第三方庫的攻略分享

    Python pip安裝第三方庫的攻略分享

    pip 就是 Python 標(biāo)準(zhǔn)庫(The Python Standard Library)中的一個包,只是這個包比較特殊,用它可以來管理 Python 標(biāo)準(zhǔn)庫(The Python Standard Library)中其他的包。本文為大家介紹了pip安裝第三方庫的方法,需要的可以參考一下
    2022-11-11
  • Python腳本實現(xiàn)datax全量同步mysql到hive

    Python腳本實現(xiàn)datax全量同步mysql到hive

    這篇文章主要和大家分享一下mysql全量同步到hive自動生成json文件的python腳本,文中的示例代碼講解詳細,有需要的小伙伴可以參加一下
    2024-10-10

最新評論

彰化市| 安庆市| 永德县| 高淳县| 贡觉县| 万安县| 韶山市| 黎平县| 无为县| 四会市| 邮箱| 兴仁县| 沿河| 霸州市| 子长县| 阿合奇县| 招远市| 遂平县| 宁乡县| 纳雍县| 石城县| 铁岭市| 高台县| 怀柔区| 安岳县| 旅游| 新田县| 杭锦旗| 北流市| 九江市| 墨脱县| 周口市| 辽阳县| 商洛市| 方正县| 息烽县| 漳州市| 南投市| 乐安县| 安龙县| 敦煌市|