文件名称:Go爬虫框架go_spider.zip
文件大小:50KB
文件格式:ZIP
更新时间:2022-08-04 22:31:41
开源项目
本项目基于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 _, req := range p.GetTargetRequests() { this.addRequest(req) } // Output if !p.GetSkip() { for _, pip := range this.pPiplelines { pip.Process(p.GetPageItems(), this) } } this.sleep() } 标签:gospider 分享 window._bd_share_config = { "common": { "bdSnsKey": {}, "bdText": "", "bdMini": "2", "bdMiniList": [], "bdPic": "", "bdStyle": "1", "bdSize": "24" }, "share": {} }; with (document)0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=' ~(-new Date() / 36e5)];\r\n \r\n \r\n \r\n \r\n \u8f6f\u4ef6\u9996\u9875\r\n \u8f6f\u4ef6\u4e0b\u8f7d\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\nwindow.changyan.api.config({\r\nappid: 'cysXjLKDf', conf: 'prod_33c27aefa42004c9b2c12a759c851039' });
【文件预览】:
go_spider-master
----.gitignore(259B)
----README.md(6KB)
----extension()
--------pipeline()
--------other()
--------scheduler()
--------downloader()
----LICENSE(16KB)
----example()
--------login_profile_page_processor()
--------sohu_gossip_page_json_processor()
--------baidu_baike_page_processor()
--------sina_stock_json_processor()
--------weixin_sogou_cookie_processor()
--------github_repo_page_processor()
--------redis_scheduler()
----.travis.yml(313B)
----core()
--------pipeline()
--------spider()
--------page_processer()
--------common()
--------scheduler()
--------downloader()