crawler4j源码学习(1):搜狐新闻网新闻标题采集爬虫
2016-08-20 12:42
465 查看
版权声明:Copyright©2015-2020 Phoenix All Rights Reserved. https://blog.csdn.net/tianshan2010/article/details/83043952
crawler4j是用Java实现的开源网络爬虫。提供了简单易用的接口,可以在几分钟内创建一个多线程网络爬虫。下面实例结合jsoup,采集搜狐新闻网(http://news.sohu.com/)新闻标题信息。
所有的过程仅需两步完成:
第一步:建立采集程序核心部分
29 30 /** 31 * @date 2016年8月20日 上午11:52:13 32 * @version 33 * @since JDK 1.8 34 */ 35 public class MyCrawler extends WebCrawler { 36 37 //链接地址过滤// 38 private final static Pattern FILTERS = Pattern.compile(".*(\\.(css|js|gif|jpg" + "|png|mp3|mp3|zip|gz))$"); 39 40 @Override 41 public boolean shouldVisit(Page referringPage, WebURL url) { 42 String href = url.getURL().toLowerCase(); 43 return !FILTERS.matcher(href).matches() && href.startsWith("http://news.sohu.com/"); 44 } 45 46 /** 47 * This function is called when a page is fetched and ready to be processed 48 * by your program. 49 */ 50 @Override 51 public void visit(Page page) { 52 String url = page.getWebURL().getURL(); 53 logger.info("URL: " + url); 54 55 if (page.getParseData() instanceof HtmlParseData) { 56 HtmlParseData htmlParseData = (HtmlParseData) page.getParseData(); 57 String text = htmlParseData.getText(); 58 String html = htmlParseData.getHtml(); 59 Set<WebURL> links = htmlParseData.getOutgoingUrls(); 60 61 logger.debug("Text length: " + text.length()); 62 logger.debug("Html length: " + html.length()); 63 logger.debug("Number of outgoing links: " + links.size()); 64 logger.info("Title: " + htmlParseData.getTitle()); 65 66 } 67 } 68 69 }
第二步:建立采集程序控制部分
28 /** 29 * @date 2016年8月20日 上午11:55:56 30 * @version 31 * @since JDK 1.8 32 */ 33 public class MyController { 34 35 /** 36 * @param args 37 * @since JDK 1.8 38 */ 39 public static void main(String[] args) { 40 // TODO Auto-generated method stub 41 42 //本地嵌入式数据库,采用berkeley DB 43 String crawlStorageFolder = "data/crawl/root"; 44 int numberOfCrawlers = 3; 45 46 CrawlConfig config = new CrawlConfig(); 47 config.setCrawlStorageFolder(crawlStorageFolder); 48 49 /* 50 * Instantiate the controller for this crawl. 51 */ 52 PageFetcher pageFetcher = new PageFetcher(config); 53 RobotstxtConfig robotstxtConfig = new RobotstxtConfig(); 54 RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher); 55 CrawlController controller; 56 try { 57 controller = new CrawlController(config, pageFetcher, robotstxtServer); 58 controller.addSeed("http://news.sohu.com/"); 74 controller.start(MyCrawler.class, numberOfCrawlers); 75 } catch (Exception e) { 76 // TODO Auto-generated catch block 77 e.printStackTrace(); 78 } 79 80 } 81 82 }
采集结果展示:
阅读更多
相关文章推荐
- crawler4j源码学习(1):搜狐新闻网新闻标题采集爬虫
- crawler4j源码学习(2):Ziroom租房网房源信息采集爬虫
- crawler4j源码学习(2):Ziroom租房网房源信息采集爬虫
- 用以获取网页源码并转码的方式。(新闻标题信息采集)
- java爬虫(Jsoup)爬取某新闻站点标题
- Java网络编程(一) - Java网页爬虫 - 爬取自己的CSDN博客标题和阅读数(附源码)
- 19Python爬虫--爬取新浪新闻标题并保存到数据库
- 爬虫学习——爬虫之新浪新闻
- 开源JAVA爬虫crawler4j源码分析
- 友善之臂视频监控方案源码学习(6) - 视频采集
- Python爬虫框架Scrapy 学习笔记 7------- scrapy.Item源码剖析
- 开源JAVA爬虫crawler4j源码分析 - 2 开始使用crawler4j
- 【学习】03 淘宝爬虫-使用selenium采集关键词为电动车的数据
- 网络爬虫学习笔记———网页源码下载之get方法
- 用C#开发蜘蛛网络爬虫采集程序(附源码)(一)
- python爬虫——获取新闻标题
- 新闻采集源码可自写规则
- python学习笔记之网络爬虫(七)爬取官网信息标题
- 史林枫:开源HtmlAgilityPack公共小类库封装 - 网页采集(爬虫)辅助解析利器【附源码+可视化工具推荐】
- 友善之臂视频监控方案源码学习(6) - 视频采集