老狗咬咬乐-SpringCloud概述
在微服务概念风生水起的背景下,如何提供一种简单易行的分布式系统开发模型,成了水到渠成的事情,SpringCloud就是在这种背景下,应运而生。在微服务构建过程中,服务注册发现 、服务网关、负载均衡 、容错断路器、消息总线,以及服务配置 、服务监控等等一系列操作,都是非常重要的,接下来我们就看看SpringCloud提供的一揽子解决方案
在微服务概念风生水起的背景下,如何提供一种简单易行的分布式系统开发模型,成了水到渠成的事情,SpringCloud就是在这种背景下,应运而生。在微服务构建过程中,服务注册发现 、服务网关、负载均衡 、容错断路器、消息总线,以及服务配置 、服务监控等等一系列操作,都是非常重要的,接下来我们就看看SpringCloud提供的一揽子解决方案
爬虫技术也不是局限于某种编程语言的应用技术,语种上没有优劣之分,有时候我们遇到问题,除了参考网上的案例,去读源码,去了解程序逻辑的具体意图,很多时候也要考虑跨语言跨领域去借鉴一些优秀的解决方法。所以,爬虫技术完全是发散性的,可能涉及的东西非常多,保持一颗好奇心是非常重要的
很久以前,一门叫java的编程语言面世,据说当时创派祖师爷们是喝着爪哇岛产咖啡苦思冥想所悟,所以时至今日,这门编程语言的图腾,还是一杯冒着热气儿的咖啡。不久后EJB应运而生,拉开了J2EE的序幕,但好景不长,EJB起初精心设计,却因其相对复杂和笨重招来不少非议,最后存亡之秋,J2EE信徒没有放弃,精诚石开,最终Spring横空出世,展开新的篇章
这一次我们即是接着上篇的Selenium登录,拿到它的Cookie,然后在重新打开的浏览器中,通过加载Cookie来达到用户已经登录的状态。利用Selenium实现登录、并通过获取的Cookie去访问受限页面,可以让我们写的爬虫在更多的场景下进行劳作。但还是要强调一点,如有违法犯纪,损人利己,切不可为,要在法律法规允许的范围内施展才艺
前面我们学了借助Selenium抓取动态页面,感受了下Selenium飘逸的功能。但有时候呢,查看页面时需要一些权限,不登录没法看,这让人如何是好…莫怕,Selenium有办法!Selenium能模拟用户登录,是可以让我们通过爬虫程序获取受限制的数据信息的,接着我们就这前面的,在百度移动端的页面上,来实现用户登录
之前讲了很多关于webmagic的爬虫实现方法,都是基于静态网页的,我们只需考虑根据链接下载页面,然后解析html提取目标数据即可。然而,很多网站的页面数据是动态的,那么简单的下载解析将毫无意义,这时候我们就得借助额外的技术方案来达成目的,这里我们准备借助一个爬取动态网页信息比较实用的插件工具,即是Selenium,来实现我们的爬虫程序
计算机程序在运行的时候,并不是完全如期望的一样顺风顺水,很多因素都可能会导致程序中断,爬虫程序亦是如此。在爬取数据的过程中,如果意外中断,并且我们还没有做相应的预案,那可能就是一场灾难,由于我们不知道爬虫程序的具体的爬取工作进度,不知道哪儿爬过了哪儿没爬过,吭哧吭哧费劲巴哈爬取的巨量数据,也只能前功尽弃,反复徒劳
经过对WebMagic的源码进行了走读,知道了Spider默认设置了QueueScheduler,用以处理链接重复的问题。本次学习我们再次对WebMagic的源码进行了走读,并实现了一个判定重复的简单逻辑。至此,WebMagic框架的Scheduler组件是如何实现对URL的判定重复,实际应用中,会有更加具体、更加复杂的业务需要,我们在此思路下进行实现即可
读过源代码,再回顾我们之前所学所述,WebMagic的工作机制,以及之后我们如何设计具体的爬虫程序,思路会更加明了清晰。我们知道了Scheduler是WebMagic中进行URL管理的组件,其作用是对待抓取的URL队列进行管理和对已抓取的URL进行去重。有时候不同的URL指向的是相同的页面,这时候去重就不是简单的URL字符串对比了
WebMagic框架的使用中,Pipeline组件完全是插拔式的,即我们根据功能需要,可以随意增加组合实现。事实上WebMagic框架所有的功能组件都是如此,Spider是一个队列总线,所有的组件都通过接口的实现,参与到整个数据抓取处理流程的工作中来,分工合作,按需定制,这种设计思想也是以后我们在程序设计上非常值得借鉴的