import asyncio
import functools
from concurrent.futures.thread import ThreadPoolExecutor
from requests_html import HTMLSession
import sys
session = HTMLSession() async def get_response(executor, *, url, loop: asyncio.AbstractEventLoop = None, ):
if not loop:
loop = asyncio.get_running_loop()
request = functools.partial(session.get, url)
return loop.run_in_executor(executor, request) async def bulk_requests(executor, *,
urls,
loop: asyncio.AbstractEventLoop = None, ):
for url in urls:
yield await get_response(executor, url=url, loop=loop) def filter_unsuccesful_requests(responses_and_exceptions):
return filter(
lambda url_and_response: not isinstance(url_and_response[1], Exception),
responses_and_exceptions.items()
) async def main():
executor = ThreadPoolExecutor(10)
urls = [
"https://baidu.com",
"https://cnblogs.com",
"https://163.com",
]
requests = [request async for request in bulk_requests(executor, urls=urls, )]
responses_and_exceptions = dict(zip(urls, await asyncio.gather(*requests, return_exceptions=True)))
responses = {url: resp.html for (url, resp) in filter_unsuccesful_requests(responses_and_exceptions)} for res in responses.items():
print(res[1].xpath("//head//title//text()")[0]) for url in urls:
if url not in responses:
print(f"No successful request could be made to {url}. Reason: {responses_and_exceptions[url]}",
file=sys.stderr) asyncio.run(main())

最新文章

  1. intel82599在centos6.5下编译安装
  2. Strus2学习:基础(一)
  3. 如何使用openssl生成RSA公钥和私钥对
  4. mesos 学习笔记1 -- mesos安装和配置
  5. 关于 jquery select2 多个关键字 模糊查询的解决方法
  6. 详细剖析电脑hosts文件的作用和修改
  7. 【Hadoop环境搭建】Centos6.8搭建hadoop伪分布模式
  8. pgAdminIII使用图解
  9. java.io.NotSerializableException
  10. 图片的 base64 编码
  11. spring boot使用profile来区分正式环境配置文件与测试环境配置文件
  12. WebRtc编译好的vs2015源码
  13. AtCoder Regular Contest 080 (ARC080) E - Young Maids 线段树 堆
  14. Java:JDBC的基本使用
  15. 把一个List<T>的数据复制至另一个List<T>
  16. Linux基础命令---tail显示文本
  17. libgdx学习记录17——照相机Camera
  18. Docker Swarm Mode无法增加管理节点
  19. 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之一
  20. 【Python3】【贪心】hdu4296 Buildings

热门文章

  1. IE各版本处理XML的方式
  2. react portals 插槽 实现简易弹窗
  3. 关于Highcharts数据量超过1000时无法显示问题
  4. 3.MySQL的架构介绍
  5. Oracle权限管理详解(1)
  6. Tomcat 输出日志出现中文乱码
  7. [转载] 关于CI,CD,jenkins
  8. mysql tinyint(1) 在java中被转化为boolean
  9. PXC集群信息查询
  10. 一篇关于ajax跨域问题的解决方案