龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

零基础写Java知乎爬虫之进阶篇(4)

时间:2014-11-08 02:58来源:网络整理 作者:网络 点击:
分享到:
最后我们来写个爬虫类调用前面的封装类和函数: package controller; import java.util.Set; import model.LinkFilter; import model.SpiderQueue; public class BfsSpider { /** * 使用种子

最后我们来写个爬虫类调用前面的封装类和函数:

package controller;
import java.util.Set;
import model.LinkFilter;
import model.SpiderQueue;
public class BfsSpider {
 /**
  * 使用种子初始化URL队列
  */
 private void initCrawlerWithSeeds(String[] seeds) {
  for (int i = 0; i < seeds.length; i++)
   SpiderQueue.addUnvisitedUrl(seeds[i]);
 }
 // 定义过滤器,提取以 http://www.xxxx.com开头的链接
 public void crawling(String[] seeds) {
  LinkFilter filter = new LinkFilter() {
   public boolean accept(String url) {
    if (url.startsWith("http://www.baidu.com"))
     return true;
    else
     return false;
   }
  };
  // 初始化 URL 队列
  initCrawlerWithSeeds(seeds);
  // 循环条件:待抓取的链接不空且抓取的网页不多于 1000
  while (!SpiderQueue.unVisitedUrlsEmpty()
    && SpiderQueue.getVisitedUrlNum() <= 1000) {
   // 队头 URL 出队列
   String visitUrl = (String) SpiderQueue.unVisitedUrlDeQueue();
   if (visitUrl == null)
    continue;
   DownTool downLoader = new DownTool();
   // 下载网页
   downLoader.downloadFile(visitUrl);
   // 该 URL 放入已访问的 URL 中
   SpiderQueue.addVisitedUrl(visitUrl);
   // 提取出下载网页中的 URL
   Set<String> links = HtmlParserTool.extracLinks(visitUrl, filter);
   // 新的未访问的 URL 入队
   for (String link : links) {
    SpiderQueue.addUnvisitedUrl(link);
   }
  }
 }
 // main 方法入口
 public static void main(String[] args) {
  BfsSpider crawler = new BfsSpider();
  crawler.crawling(new String[] { "http://www.baidu.com" });
 }
}

运行可以看到,爬虫已经把百度网页下所有的页面都抓取出来了:

以上就是java使用HttpClient工具包和宽度爬虫进行抓取内容的操作的全部内容,稍微复杂点,小伙伴们要仔细琢磨下哦,希望对大家能有所帮助

精彩图集

赞助商链接