crawler4j源码学习(1):搜狐新闻网新闻标题采集爬虫
2016-08-20 12:42
435 查看
crawler4j是用Java实现的开源网络爬虫。提供了简单易用的接口,可以在几分钟内创建一个多线程网络爬虫。下面实例结合jsoup,采集搜狐新闻网(http://news.sohu.com/)新闻标题信息。
所有的过程仅需两步完成:
第一步:建立采集程序核心部分
第二步:建立采集程序控制部分
采集结果展示:
所有的过程仅需两步完成:
第一步:建立采集程序核心部分
/** * @date 2016年8月20日 上午11:52:13 * @version * @since JDK 1.8 */ public class MyCrawler extends WebCrawler { //链接地址过滤// private final static Pattern FILTERS = Pattern.compile(".*(\\.(css|js|gif|jpg" + "|png|mp3|mp3|zip|gz))$"); @Override public boolean shouldVisit(Page referringPage, WebURL url) { String href = url.getURL().toLowerCase(); return !FILTERS.matcher(href).matches() && href.startsWith("http://news.sohu.com/"); } /** * This function is called when a page is fetched and ready to be processed * by your program. */ @Override public void visit(Page page) { String url = page.getWebURL().getURL(); logger.info("URL: " + url); if (page.getParseData() instanceof HtmlParseData) { HtmlParseData htmlParseData = (HtmlParseData) page.getParseData(); String text = htmlParseData.getText(); String html = htmlParseData.getHtml(); Set<WebURL> links = htmlParseData.getOutgoingUrls(); logger.debug("Text length: " + text.length()); logger.debug("Html length: " + html.length()); logger.debug("Number of outgoing links: " + links.size()); logger.info("Title: " + htmlParseData.getTitle()); } } }
第二步:建立采集程序控制部分
/** * @date 2016年8月20日 上午11:55:56 * @version * @since JDK 1.8 */ public class MyController { /** * @param args * @since JDK 1.8 */ public static void main(String[] args) { // TODO Auto-generated method stub //本地嵌入式数据库,采用berkeley DB String crawlStorageFolder = "data/crawl/root"; int numberOfCrawlers = 3; CrawlConfig config = new CrawlConfig(); config.setCrawlStorageFolder(crawlStorageFolder); /* * Instantiate the controller for this crawl. */ PageFetcher pageFetcher = new PageFetcher(config); RobotstxtConfig robotstxtConfig = new RobotstxtConfig(); RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher); CrawlController controller; try { controller = new CrawlController(config, pageFetcher, robotstxtServer); controller.addSeed("http://news.sohu.com/"); controller.start(MyCrawler.class, numberOfCrawlers); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
采集结果展示:
相关文章推荐
- crawler4j源码学习(2):Ziroom租房网房源信息采集爬虫
- 用以获取网页源码并转码的方式。(新闻标题信息采集)
- 新闻采集源码可自写规则
- 用C#开发蜘蛛网络爬虫采集程序(附源码)(二)
- python爬虫新闻的学习笔记
- 网络爬虫学习笔记———网页源码下载之get方法
- 分享C#源代码,自动排课系统 V1.1(源码), 新闻自动采集系统(源码)
- python爬虫——获取新闻标题
- 京东商品信息和评价采集爬虫源码
- Java网络编程(一) - Java网页爬虫 - 爬取自己的CSDN博客标题和阅读数(附源码)
- 16Aspx.com-书通网中小学生免费在线学习网站源码 带采集带手机版帝国cms内核
- C# 网站数据采集网易NBA列表页面数据(新闻首页)源码
- 友善之臂视频监控方案源码学习(6) - 视频采集
- 开源JAVA爬虫crawler4j源码分析 - 1 开个头
- java爬虫(Jsoup)爬取某新闻站点标题
- Python爬虫框架Scrapy 学习笔记 7------- scrapy.Item源码剖析
- 用C#开发蜘蛛网络爬虫采集程序(附源码)(一)
- 友善之臂视频监控方案源码学习(6) - 视频采集
- 开源JAVA爬虫crawler4j源码分析 - 3 线程管理
- 如何开发凤凰网资讯即时新闻采集爬虫