β

基于GOLANG的垂直个性爬虫框架【go_spider】

胡户主—《江南360》 417 阅读
访问项目的github链接 简介 本项目基于golang开发,是一个开放的垂直领域的爬虫引擎,主要希望能将各个功能模块区分开,方便使用者重新实现子模块,进而构建自己垂直方方向的爬虫。 本项目将爬虫的各个功能流程区分成Spider模块(主控),Downloader模块(下载器),PageProcesser模块(页面分析),Scheduler模块(任务队列),Pipeline模块(结果输出); 执行过程简述: Spider从Scheduler中获取包含待抓取url的Request对象,启动一个协程,一个协程执行一次爬取过程,此处我们把协程也看成Spider,Spider把Request对象传入Downloader,Downloader下载该Request对象中url所对应的页面或者其他类型的数据,生成Page对象; Spider调用PageProcesser模块解析Page对象中的页面数据,并存入Page对象中的PageItems中(以Key-Value对的形式保存),同时存入解析结果中的待抓取链接,Spider会将待抓取链接存入Scheduler模块中的Request队列中; Spider调用Pipeline模块输出Page中的PageItems的结果; 执行步骤1,直至Scheduler中所有链接被处理完成,则Spider被挂起等待下一个待抓取链接或者终止。 执行过程相应的Spider核心代码,代码代表一次爬取过程: // core processer func (this *Spider) pageProcess(req *request.Request) {     // Get Page     p := this.pDownloader.Download(req)     if p == nil {         return     }     // Parse Page     this.pPageProcesser.Process(p)     for ...

Continue reading ‘基于GOLANG的垂直个性爬虫框架【go_spider】’ »

发表评论