go语言学习爬虫框架总结
admin
2023-02-01 21:45:52
0

  最近主攻go的学习,在学完了基础语法,看完了无闻翻译的《The way to go》和ccmouse大神的慕课网课程后,感觉基础差不多了,继续深入挖掘ccmouse大神的爬虫项目,收获颇丰,感觉还是有一定的难度的,会继续啃下去,学习之余感觉自己实在是井底之蛙,无数光阴尽数浪费,无所建树,思维停留在最原始的层面,无法向前迈进;庆幸现在有所觉悟,人生匆匆几十载,时间是最宝贵的,不论哪个领域,选择一个自己认定的,低下头向前冲刺,丰富自己的头脑,提升自己的认知。好像扯得有点远了,下面是项目的总结。

  1. 项目有一个main.go的入口文件,然后是各个子目录功能文件夹;如图:go语言学习爬虫框架总结 engine是总的控制文件,把请求和正则解析push到总的slice []request中,fetcher主要是通过http库去获取页面body信息,model是要保存的人的信息struct
  2. 说完了目录结构,接下来介绍下流程:go语言学习爬虫框架总结
  3. 整个单机版爬虫项目比较简单,但对我来说收货还是比较大的,其中涉及到一些技术细节,如接口定义,结构方法的使用,
  4. 后面还有并发版本和分布式版本,就比较复杂了,并发版是充分使用go的goroutine和chan,要在大的方向上理清楚思路,抽象出一些公用的方法和结构,重要的正则解析要做test工作,然后在此指引下一步步构建,不可盲目前进。首先并发版需要两个chan,一个in :=chan Request和另一个out:=chan ParseResult,并发版启动WorkerCount个goroutine去并发获取in chan url内容并解析出新url推送到out chan,同时并发版有一个scheduler调度器, 将初始的爬取Request(包括url和对应的parser,因为每个网址的parser规则不同所以要成组传输)放进scheduler里的workerChan即前面定义的in chan, 他俩是一个chan, 程序开始并发执行,由于执行的比较快会被爬取网站断掉, 可以用time.Tike(time)来限制速度,另爬取时可能要设置相应的header头,否则会被屏蔽掉.
  5. 由于并发版多个worker都在争抢Request去执行,控制力度比较小,只适用于单机,不适合多机器分布式部署,故演化出第三个版本:队列实现.队列执行效率和并发版执行效率差不多. scheduler调度器中有rqquestChan chan Request 和 workerChan chan chan Request(注意这里是两个chan), 在run方法中定义一个out chan ParseResult,和并发版相比而言,队列版多了workerChan 这个chan,主要用来实现队列的调度。试着描述下整个过程不一定清晰:go语言学习爬虫框架总结
  6. 下面附上几张ccmouse大神的讲课ppt供大家理解,如有不清楚的欢迎下方留言讨论。go语言学习爬虫框架总结go语言学习爬虫框架总结go语言学习爬虫框架总结

相关内容

热门资讯

特朗普的关税保护伞,反成了北美... (文/张志峰 编辑/吕栋)近日多家外媒报道,7月以来,北美最大的白电制造商惠而浦在艾奥瓦州阿马纳的冰...
专访郭列:做出脸萌、FaceU... 文|周鑫雨 编辑|张雨忻 什么样画像的AI创业者会饱受瞩目?不同投资人心里或许有不同的答案,但其中一...
亚太唯一!阿里云入选Gartn... 据阿里云消息,近日,Gartner发布2025年《Magic Quadrant™ for Obser...
重庆物联网远程控制系统公司的应... 在工业制造、环保监测及商贸流通等领域,重庆物联网远程控制系统公司所提供的产品与服务正逐渐成为配套设施...
拒绝踩坑!2026年云手机推荐... 到底云手机哪个好用?2026年云手机市场品牌众多,低价套路、配置虚标、隐形消费、挂机掉线等问题也越来...
选购新能源电池包切割机器人标准... 在新能源电池回收与拆解领域,电池包切割机器人已成为标配设备。但面对市场上多款产品,采购方常陷入困惑:...
给“AI”发身份证,国内首个智... IT之家 7 月 23 日消息,据央视新闻今日报道,《人工智能 智能体互联》系列国家标准应用推进专题...
西门子洗衣机开始键不启动只滴滴... 1、可能是由于洗衣机的门盖没有关严,这时候如果衣服放的太多的话,洗衣机的门盖没关好,这时也会发生西门...
西门子洗衣机不启动滴滴响 1、可能是因为水龙头没有打开导致的;2、可能是出现了故障代码的导致的;3、可能是洗衣机门开关坏了导致...
西门子洗衣机用其他档位还是不启... 1、可能是电源线及插头存在断路的情况。2、可能是因为电脑板电源变压器损坏。3、可能是因为漏电空气开关...