python retry.png
  • Madman
  • ·

Python 重试功能

有时候 HTTP 请求失败了,可能是网络连接不稳定或者后端接口服务暂时未启动等原因,此时我们希望请求失败后能够进行一定次数的重试(retry),从而最大限度保证请求能够最终成功。除了使用装饰器来实现以外,requests 模块中使用的 urllib3 模块默认自带重试功能

Python 3 爬虫-min.png
  • Madman
  • ·

Python 3 爬虫|第11章:爬取海量妹子图

爬取 www.mzitu.com 全站图片,截至目前共 5162 个图集,16.5 万多张美女图片,使用 asyncio 和 aiohttp 实现的异步版本只需要不到 2 小时就能爬取完成。按日期创建图集目录,保存更合理。控制台只显示下载的进度条,详细信息保存在日志文件中。支持异常处理,不会终止爬虫程序。失败的请求,下次再执行爬虫程序时会自动下载

Python 3 爬虫-min.png
  • Madman
  • ·

Python 3 爬虫|第5章:多线程并发下载

I/O 密集型最适合使用多线程,当然包括网络 I/O。我们要下载多张图片,每次去下载一张图片,就是发起一次 HTTP 请求(使用 TCP 协议),客户端首先通过 socket.socket() 创建一个套接字,然后调用 connect() 方法经过三次握手与服务端建立 TCP 连接,这个过程是阻塞的。建立连接后,客户端将请求(要访问图片资源)发送给服务端,然后服务端返回响应,客户端用...

Python 3 爬虫-min.png
  • Madman
  • ·

Python 3 爬虫|第3章:同步阻塞下载

从这一篇开始,将介绍如何用 Python 3 实现网络爬虫,多任务快速抓取你想要的数据。每一次 HTTP 请求/响应都要经过 TCP 连接、客户端发送请求数据、服务端分多次返回响应数据,这个过程中,客户端的 CPU 在等待网络 I/O 时会阻塞。Python 依序下载是一个主线程依次等待每个网络 I/O 完成,而多线程是多个线程并发(不是并行)等待多个网络 I/O,当一个线程因为等待网络...