`
yuhai.china
  • 浏览: 160230 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用neko抽取超链接及锚文本

阅读更多
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.URL;
import java.nio.CharBuffer;
import java.util.HashMap;

import org.cyberneko.html.parsers.DOMParser;
import org.xml.sax.InputSource;


public class Crawler {

	public static void main(String[] args) {
		String url = "http://www.sina.com.cn";
		getLinksByNeko(getPage(url, "gbk"));
	}
	public static String getPage(String url, String encoding){
		BufferedReader in = null;
		try {
			in = new BufferedReader(new InputStreamReader(  
			         new URL(url).openStream(),encoding));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		CharBuffer bos = CharBuffer.allocate(20480);
		StringBuilder sb = new StringBuilder();
		try {
			while (in.read(bos) != -1) {
				bos.flip();
				sb.append(bos.toString());
			}
		} catch (IOException e1) {
			e1.printStackTrace();
		}finally{
			if(in != null)
				try {
					in.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
		return sb.toString();
	}
	private static void getLinksByNeko(String Page) {
		DOMParser parser = new DOMParser();
		HashMap<String,String> map = new HashMap<String,String>();
		try {
			parser.setFeature("http://xml.org/sax/features/namespaces", false);
			StringReader sin = new StringReader(Page);
			parser.parse(new InputSource(sin));
			org.w3c.dom.Document doc = parser.getDocument();
			org.w3c.dom.NodeList products = org.apache.xpath.XPathAPI
					.selectNodeList(doc, "//A");
			org.w3c.dom.Node node = null;
			for (int i = 0; i < products.getLength(); i++) {
				node = products.item(i);		
				map.put(node.getAttributes().getNamedItem("href").getNodeValue(),node.getTextContent());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println(map.toString());
		System.out.println(map.size());
	}
}

分享到:
评论

相关推荐

    neko-htmlunit-2.27-API文档-中文版.zip

    赠送jar包:neko-htmlunit-2.27.jar; 赠送原API文档:neko-htmlunit-2.27-javadoc.jar; 赠送源代码:neko-htmlunit-2.27-sources.jar; 赠送Maven依赖信息文件:neko-htmlunit-2.27.pom; 包含翻译后的API文档:...

    开源项目-neko-neko-godi.zip

    开源项目“neko-neko-godi.zip”是一个包含DI(Dependency Injection)容器的代码库,主要文件为“godi-master”。DI容器是软件设计模式中的一种,它在面向对象编程中扮演着至关重要的角色,特别是在Java和.NET等...

    neko-htmlunit-2.33-API文档-中文版.zip

    赠送jar包:neko-htmlunit-2.33.jar; 赠送原API文档:neko-htmlunit-2.33-javadoc.jar; 赠送源代码:neko-htmlunit-2.33-sources.jar; 赠送Maven依赖信息文件:neko-htmlunit-2.33.pom; 包含翻译后的API文档:...

    gladiatorplus-Neko98-master_deskq2j_neko_Neko1-3.1-release_

    《gladiatorplus-Neko98-master_deskq2j_neko_Neko1-3.1-release》是一款专为Windows系统设计的Linux模拟器,旨在让用户在Windows环境下体验Linux的Neko1-3.1发行版。这个项目的核心是将Linux环境与Windows操作系统...

    Professional haXe and Neko

    - haXe 和 Neko 开发者如何利用文本编辑器和其他工具取代传统的 IDE。 - 自动化构建过程。 - 代码质量保证措施。 **2.7 More Interactive Content with JavaScript** - **更多交互内容与 JavaScript:** - ...

    Neko VM Complete Source Code (Virtual Machine)

    Learning and using Neko is very easy. You can easily extend the language with C libraries. The Virtual Machine is very lightweight and well optimized so it's fast! The VM can be easily embeded into ...

    M3G2FBX_neko_

    总的来说,"M3G2FBX_neko_" 是一个实用的工具,帮助游戏开发者跨越不同平台和软件之间的障碍,使得他们可以充分利用现有的M3G资源,提升开发效率,同时保持游戏的视觉质量。对于那些有大量M3G模型需要更新到现代游戏...

    neko-htmlunit-2.25.jar

    java运行依赖jar包

    neko-htmlunit-2.33-API文档-中英对照版.zip

    赠送jar包:neko-htmlunit-2.33.jar; 赠送原API文档:neko-htmlunit-2.33-javadoc.jar; 赠送源代码:neko-htmlunit-2.33-sources.jar; 赠送Maven依赖信息文件:neko-htmlunit-2.33.pom; 包含翻译后的API文档:...

    neko-htmlunit-2.27-API文档-中英对照版.zip

    赠送jar包:neko-htmlunit-2.27.jar; 赠送原API文档:neko-htmlunit-2.27-javadoc.jar; 赠送源代码:neko-htmlunit-2.27-sources.jar; 赠送Maven依赖信息文件:neko-htmlunit-2.27.pom; 包含翻译后的API文档:...

    cats1_neko_

    "cats1.pdf"可能会详细介绍nekogame的战斗模式,是回合制还是实时战斗,如何发动技能,以及如何利用策略战胜敌人。此外,可能还会涉及物品系统,包括装备、道具的获取、使用和升级方法,这些都会对玩家的游戏体验...

    cats3_neko_

    docs for the neko rpg 3

    neko_cat_windows_desktop_builtyhr_zip_

    "NEKO.TXT"则可能是一个文本文件,通常用于提供软件的说明、许可协议或者开发者的信息。在这个场景下,它可能包含了关于"NEKO"软件的使用指南、注意事项,或者是开发团队的致谢和联系方式。用户在使用前应该先阅读这...

    neko:Neko虚拟机

    Neko虚拟机见快照构建可以在每个的摘要部分的“工件”链接中找到已编译的二进制文件。 对于macOS,可以在一个命令中使用构建最新的master分支的Neko快照: brew install neko --HEAD 。 它将安装所需的依赖项,构建...

    neko-htmlunit-2.33.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar包下载地址:【***.jar下载地址(官方地址+国内镜像地址).txt】 ...

    cats2_neko_

    "cats2_neko_"可能是这款游戏的文档或资料包,为玩家提供更详尽的游戏背景、规则说明以及可能的攻略指南。下面我们将详细探讨《nek0 RPG 2》的相关知识点。 首先,我们要理解RPG(Role-Playing Game)的概念。RPG...

    Neko RPGXP v0.5

    Neko RPGXP for android 是在由韩国友人开发的一款在谷歌市场上免费下载的RPGXP软件 仅供测试

    neko8:受pico8,tic80和liko12启发的幻想控制台,用C ++编写

    neko8同样采用C++编程语言,旨在为用户带来类似的功能和体验,同时利用C++的强大性能和现代编程特性。 1. **幻想控制台概念**: 幻想控制台是模拟复古游戏机的软件工具,它们限制了资源(如颜色、声音和内存),...

    neko:一只小猫在 macOS 上跟随你的鼠标

    Swift编程语言的特性使得neko应用能够充分利用macOS系统的功能,例如使用AppKit或SceneKit框架来实现动画效果,让小猫的行动看起来更加自然。开发者可能还利用Core Animation来优化视觉表现,以及使用Core Data来...

    neko-server

    综上所述,"neko-server"是一个基于TypeScript的高级服务器应用,它利用现代Web开发的最佳实践,提供稳定、安全的网络服务。开发者通过精心设计的API、强大的错误处理和测试策略,以及优化的性能监控,确保了"neko-...

Global site tag (gtag.js) - Google Analytics