Veiking百草园


老狗啃爬虫-URL去重之Scheduler

老狗啃骨头   @Veiking   2020-12-21

老狗啃爬虫-URL去重之Scheduler

摘要:

读过源代码,再回顾我们之前所学所述,WebMagic的工作机制,以及之后我们如何设计具体的爬虫程序,思路会更加明了清晰。我们知道了Scheduler是WebMagic中进行URL管理的组件,其作用是对待抓取的URL队列进行管理和对已抓取的URL进行去重。有时候不同的URL指向的是相同的页面,这时候去重就不是简单的URL字符串对比了

  前面我们爬取数据做入库操作的时候,留心的话可以发现,人物信息页面前翻页后翻页,其实获取到并放入待抓取队列的链接,是有重复的,但运行时,WebMagic并没有做重复抓取的动作,这是为什么呢?

源码阅读

  经过一番开发学习,我们是知道Spider在WebMagic框架在整个数据爬取处理过程中,起着穿针引线的关键作用,那么我们如想更加全面的了解WebMagic框架,就有必要看一看Spider的源码探一探WebMagic的究竟
  找到jar包webmagic-core-0.7.4.jar:


  我们看到,这里有很多接口很多类:Downloader、Pipeline、PageProcessor、Scheduler等等,我们找到Spider,拨开源码,细细看来:


  哦,原来,Spider已经帮我们默认初始了QueueScheduler,那接着我们再细看这个QueueScheduler类,可以发现,原来QueueScheduler已经帮我们处理了URL重复的问题:


  后面我们再深入度去看看,在DuplicateRemovedScheduler类中,又是如何使用DuplicateRemover处理链接重复问题的。
  此外,我们在多看一眼源码,WebMagic框架的Spider类,其实在我们程序启动运行的时候,已经做足了工作:


  其中initComponent()方法,实例了默认的downloader、pipelines等;此外还需特别留意下threadPool(CountableThreadPool)这个线程池的巧妙应用等等。
  读过这些源代码,再回顾我们之前所学所述,WebMagic的工作机制,以及之后我们该如何设计具体的爬虫程序,估计思路会更加明了清晰。

结语

  经过上面的一番源码探究,我们可以知道Scheduler是WebMagic中进行URL管理的组件,其作用是对待抓取的URL队列进行管理和对已抓取的URL进行去重
  当然,简单的URL链接去重,WebMagic已经帮我们实现了。但事实上,有时候我们抓取的目标网站可能并不是那么规范,即不同的URL也有可能指向的是相同内容的页面,这时候去重就不是简单的URL字符串对比了,可能还需要一些其他额外的规则考量,这时候,我们就需要考虑按照具体需求,设计实现满足我们需要的Scheduler。
  接下来我们就延续WebMagic框架的思想结构,尝试用代码,按照一定的规则,实现我们想要的Scheduler。


老狗啃骨头



慷慨发言

(您提供的信息将用于后续必要的反馈联系,本站会恪守隐私)

潜影拾光

平遥古城

好的保存,是不破坏

扫码转发

二维码
二维码
二维码
二维码
二维码
二维码

博文标签