我是如何使用laravel写爬虫应用的

image

上面这个图是我设计的爬虫架构,这个架构逻辑比较简单。

首先是链接池,链接池存储需要爬取的网页链接,每个链接有当前爬取状态,尝试次数等信息,爬取状态分为:waiting(等待),going(正在进行),success(爬取成功),fail(爬取失败)。链接的默认状态是waiting,当爬虫正在爬取这个链接的内容的时候,链接进入going状态,链接内容爬取成功进入success状态,爬取失败进入fail状态。链接的另一个参数是尝试次数,当链接爬取失败则尝试次数加1并再次进入waiting状态,设定尝试次数阈值,比如设定阈值为3,当尝试次数超过3次,则进入fail状态。

爬虫管理者负责创建爬虫任务,我们可以创建一个task来定期运行爬虫管理者。爬虫管理者从爬虫池中选取一定数量的处于waiting状态的链接,创建爬虫任务。

爬虫任务接受一个目标链接,然后针对链接的格式运行对应的解析器。如果发现新的目标链接,则将新发现的链接放入链接池。这个地方需要注意的是爬虫在请求链接内容的时候,要使用代理,这样可以防止同一个ip频繁请求被封的情况。

刚开始链接池是空的,所以我们需要放入第一个目标链接,这样爬虫会不断的发现新链接,然后将新链接作为目标链接再次爬取内容,如果效果好的话,爬虫会一直运行知道没有新的链接发现未知。

下面这个是我最近做的一个微信小程序,用来快速查找澳洲保健品中文信息的小工具。

image
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 很早就有采集知乎用户数据的想法,要实现这个想法,需要写一个网络爬虫(Web Spider)。因为在学习 py...
    呓语_yiyu阅读 6,755评论 12 148
  • 这个项目也是初窥python爬虫的一个项目,也是我的毕业设计,当时选题的时候,发现大多数人选择的都是网站类,实在是...
    梦航韩语阅读 3,041评论 2 37
  • 1. 概述 本文主要介绍网络爬虫,采用的实现语言为Python,目的在于阐述网络爬虫的原理和实现,并且对目前常见的...
    Lemon_Home阅读 2,814评论 0 21
  • “姑苏城外寒山寺,夜半钟声到客船”让我对姑苏有了一个悠远的梦。在梦里总是会有那静静的流水,静静的小桥,静...
    93bd497780ed阅读 1,550评论 7 30
  • 1、两只股票时,剩余资金总额: 1000* (1-30%)+1000*(1+10%)=1800元 2、5只股...
    ai莎莎阅读 357评论 0 0