今天的主角是一只垂直的小爬虫,爬取工大要闻,(我爱我的工大),其实这个小爬虫,还有很多不足,但是拥有它,整个Internet好像还挺透明的
这只垂直的小爬虫,使用如下实现
实现的思路很简单,我从主函数开始简单叙述一下整个运行流程,第一步:收集需要爬取的url地址,容器我选择的是ConcurrentLinkedQueue非阻塞队列,它底层使用Unsafe实现,要的就是它线程安全的特性
主函数代码如下:
1 |
|
第二步:把url列表丢线程池:
我使用的线程池是newCachedThreadPool 根据提交的任务数,动态分配线程
线程池里面干了这么几件事,下载源html
1 | /** |
解析rootUrl,目的是拿到新闻主页的url,因为新闻的正文,在那里面,边解析遍封装RootBean
1 |
|
类似,处理二级任务,这里使用到了正则表达式,原来没好好学,今天用的时候,完全蒙,还好慢慢悠悠整出来了,这块这要是观察源html,根据特性,使用jsoup提供的选择器选择,剪切,拼接出我们想要的内容,然后封装
为啥说是垂直的小爬虫,它只适合爬取我学校新闻,看下面的代码,没办法,只能拼凑剪切,最坑的是,100条新闻中,99条标题放在里面,总有那么一条放在了里面, 这个时候,就不得不去改刚才写好的规则
1 | /** |
持久化,使用的是底册的JDBC
1 | /** |
拿到的新的url称作是二级
1 |
|