Java爬虫-爬个豆瓣影院
前文再续书接上一回,上一次说了WebCollector的一些简单介绍以及Demo的讲解,今天我们来实战一下。
前文:https://blog.csdn.net/a81579261/article/details/100986966
正文
首先我们创建一个DemoDoubanCrawler类,继承于RamCrawler
这里插个题外话,说明一下RamCrawler和BreadthCrawler的区别:
大家点进去也可以看到
两个同属于基于内存的插件,但是RamCrawler属于一个短期的爬虫,如爬一次,或者爬个一会儿,可以使用。而BreadthCrawler属于一个长期的爬虫,如持续性的爬虫任务,特别是那些云服务进行爬虫,这些持续好一段时间的爬虫。实际是我们实战玩玩的,用哪个都是一样的。
回到正题来,我们先去看一下豆瓣电影网的结构
1.首页为一个模糊的列表展示
我们通过CSS元素选择只能选择到红色框的部分,下面是通过网络请求动态加载的,大家可以打开F12看看,或者后面代码成型后可以打个断点看一下page.doc/page.html这两个变量。(一开始我是打算爬下面部分的,发现根本拿不到,尴尬)
2.点击进去是一个详情页,详情页信息更多,所以我们选择爬取的最终目的是详情页的信息
看完结构之后,我们开始选一个比较匹配的Demo进行实战,我这里选的是DemoAnnotatedMatchTypeCrawler(豆瓣图书爬取)这个Demo的,一方面是因为我们需要爬取2个层次的页面,另方面是大家都是豆瓣的(你懂的),这Demo会比较相近。
首先,确认爬取的第一页
我们爬取的第一页肯定是首页:https://movie.douban.com/
为了确认这是在爬取首页,我们在后面加上一个type,好让它走首页爬取的代码,然后看看,首页爬取什么东西,如何进入下一页爬取?
next.add 第2深度的爬取任务;
page.links 为获取CSS选择器中的超链接;
li.poster>a CSS选择器指向跳转详细页面的连接;
所以这等价于:addSeed(“https://movie.douban.com/subject/27050133/?from=showing”,“moivedetail”);
第二,进行第二页的爬取
通过上面的,我们就会进入详情页,然后要干嘛?就。。。。你想干嘛就干嘛吧!
我这里就是通过CSS选择器分别爬了一下标题,编剧,明星,描述,评价,然后输出。
补充,玩着玩着被封了,怎么办?
玩着玩着,我们就会看到一下界面或者其他返回代码
然后再去官网看看,发现需要登陆,或者拒绝访问了。这说明你成功的摸到了豆瓣电影院的底线了,它将会拉黑你一天,然后我们今天就下班了?
不可能的,既然我来了,就不会轻易的离开。你不让我进,那我就易容,换张面(代理)继续玩
使用代理&#