爬蟲開發知識入門基礎(4)

爬蟲加速
當爬取的數據量非常大時,如何高效快速地進行數據抓取是關鍵。
常見的措施有多線程、多進程、異步、分佈式、細節優化等。
在這裏插入圖片描述
爬蟲加速 / 多線程、多進程
爬蟲是網絡請求密集型任務,所以使用多進程和多線程可以大大提高抓取效率,如使用 threading、multiprocessing 等。
爬蟲加速 / 異步
將爬取過程改成非阻塞形式,當有響應式再進行處理,否則在等待時間內可以運行其他任務,如使用 asyncio、aiohttp、Tornado、Twisted、gevent、grequests、pyppeteer、pyspider、Scrapy 等。
在這裏插入圖片描述
爬蟲加速 / 分佈式
分佈式的關鍵在於共享爬取隊列,可以使用 celery、huey、rq、rabbitmq、kafka 等來實現任務隊列的對接,也可以使用現成的框架 pyspider、Scrapy-Redis、Scrapy-Cluster 等。
在這裏插入圖片描述
爬蟲加速 / 優化
可以採取某些優化措施來實現爬取的加速,如:
• DNS 緩存
• 使用更快的解析方法
• 使用更高效的去重方法
• 模塊分離化管控
在這裏插入圖片描述
爬蟲加速 / 架構
如果搭建了分佈式,要實現高效的爬取和管理調度、監控等操作,我們可以使用兩種架構來維護我們的爬蟲項目。
• 將 Scrapy 項目打包爲 Docker 鏡像,使用 K8S 控制調度過程。
• 將 Scrapy 項目部署到 Scrapyd,使用專用的管理工具如 SpiderKeeper、Gerapy 等管理。
在這裏插入圖片描述 當然爬蟲採集數據使用高質量的http代理 ,效果是最好的。