基于 Laravel 实现多进程通用爬虫

训练营
关注

课程将实现一个多进程的通用爬虫,用户在管理界面添加网站地址,点击 Start 过后,后台启动进程对该地址进行爬取,并将页面中包含的 URI 放回到缓存池中等待下一步爬取,最终实现对整个站点数据的采集。管理界面使用 Laravel 实现,后台通过 HttpClient、dom-crawler、RabbitMQ、Redis 等多种技术的配合,完成一个通用的,并发的,可扩展的爬虫架构。

Laravel 实现多进程爬虫框架

课程介绍

本课程将实现一个多进程的通用爬虫,用户在管理界面添加网站地址,点击 Start 过后,后台启动进程对该地址进行爬取,并将页面中包含的 URI 放回到缓存池中等待下一步爬取,最终实现对整个站点数据的采集。

管理界面使用 Laravel 实现,后台通过 HttpClient、dom-crawler、RabbitMQ、Redis 等多种技术的配合,完成一个通用的,并发的,可扩展的爬虫架构。

通用的爬虫架构,提供丰富的扩展方式

爬虫的功能核心分为三大模块:Crawler、Filter、Processor 。 它们分别负责页面抓取,页面解析和数据储存,这三个模块各自采用公共的接口,其子类可以任意地扩充。比如继承 Filter 创建一个 CssFilter,然后在 CssFilter 中编写相应的逻辑,就可以扩充一个从页面中提取 CSS 的功能。

具有一定的数据采集性能,能够在较短时间内采集全站数据

为了尽可能提高爬虫性能,消除运行过程中的性能瓶颈,我们将 Redis、Mysql 和文件系统配合使用,采用多进程的方式对 URI 和数据并行处理,同时对爬取流程采用加锁机制,确保不会出现重复采集和数据冗余。

全栈式的项目开发,前所未有的知识广度

开发过程中涉及了大量进阶知识,包括 PHP 扩展类库的使用,通用架构搭建,消息队列,Laravel 高级应用,Mysql,Redis 等,这些组件都扮演了极其重要的角色。我们会在课程中细致地、反复地给大家讲解这些模块的用法,包含从安装到应用的所有入门必需知识。

从这个训练营你能够学到什么

  • Laravel 高级应用,了解 Laravel 开发大中型项目的架构思路
  • 爬虫知识,学会爬虫中各个组件的开发和工作流程
  • Redis,学会 Redis 的配置及使用,包括数据缓存,实现基础数据结构、加锁等操作
  • 提升侧重于后端的综合能力,本项目的重心是实现后端每个模块的核心逻辑
  • Docker、RabbitMQ,学会配置、使用这两种技术
  • PHP 面向对象综合应用,学习动态绑定和接口类的最佳应用场景

课程信息

  • 学习周期:课程有效期2个月,2个月后实验文档一直可以看,但无法进行在线实验。
  • 课程价格:当前优惠价格 159 元 。
  • 企业团报:可获得更多支持服务,请点击购买咨询

效果演示

  • 架构设计

Project_gragh

  • 首页效果图

Home_Page

  • 站点爬取结果

Crawler_Result

适合人群

  • 已经具备 Laravel 基础开发能力想要进一步突破瓶颈,提高自身大中型项目经验的开发者

  • 不具备 Laravel 及配套基础知识,但是敢于挑战自己,对自己的学习能力有充分信心的开发者

  • 想要学习 PHP 数据采集技术,开发一个基于数据支撑的网站

涉及前驱知识:

  1. Laravel 基础

  2. RabbitMQ 消息队列

  3. Redis 基础教程

实验列表

  • 实验1:项目简介
  • 实验2:通用爬虫架构设计
  • 实验3:创建爬虫项目
  • 实验4:管理控制台实现
  • 挑战:管理界面多语言支持
  • 挑战:操作状态提示
  • 实验5:爬虫库核心模块Context
  • 实验6:爬虫库核心模块Client
  • 实验7:爬虫库核心模块Result
  • 实验8:爬虫核心模块Executor
  • 实验9:爬虫库核心模块UriMap
  • 实验10:爬虫核心模块Crawler
  • 挑战:实现 JsonCrawler 爬取 API
  • 实验11:爬虫核心模块Filter
  • 挑战:实现CssFilter爬取CSS文件地址
  • 实验12:爬虫库核心模块Processor
  • 挑战:实现CssProcessor下载CSS文件
  • 实验13:使用 Docker-Compose 部署与启动项目