`

抓取时网址不完整补全处理

阅读更多
/**
	 * 将不完整的网址转换成完整网址
	 * <pre>
	 * example:
	 * 	sourceUrl = "http://www.wed114.cn/jiehun/shishanghunli/hunlicehua/";
	 * 	toConvertUrl = "/jiehun/shishanghunli/hunlicehua/201106/1496.html";
	 * 	latestUrl = "http://www.wed114.cn/jiehun/shishanghunli/hunlicehua/201106/1496.html";
	 * 	注level可选
	 * 		level = 1; (默认)	prefixUrl = "http://www.wed114.cn";
	 * 		level = 2; 			prefixUrl = "http://www.wed114.cn/jiehun";
	 * 	如果待转换地址为"./"之类的使用上级的地址,直接去掉"."
	 * 	如果待转换的为完整的网址直接返回待转换网址
	 * </pre>
	 * @param sourceUrl 	当前资源网址
	 * @param toConvertUrl	抓取的待转换的网址
	 * @param level			取地址第几级(可选) 
	 * @return	latestUrl 	完整的网址
	 * @author  chitianxiang $9th April, 2012 - 10:45 a.m
	 */
	private static String getFullurl(String sourceUrl, String toConvertUrl, int... level) {
		String prefixUrl = sourceUrl;		//前缀地址
		String latestUrl = toConvertUrl;	//最终地址
		int srcLevel = 1;					
		if (level.length > 0) {
			srcLevel = level[0];
		}
		
		//如果不是http://开头
		if (toConvertUrl.toLowerCase().indexOf("http://") == -1) {
			int endIndex = -1;
			//srcLevel + 2 中 2表示http中的//
			try {
				endIndex = EmpInfoGrabUtil.indexOf(sourceUrl, '/', srcLevel + 2);
			} catch (Exception e){
				e.printStackTrace();
				System.out.println("完整地址转换出现异常!!!");
				return " ";
			}
			if (endIndex != -1) {
				prefixUrl = sourceUrl.substring(0, endIndex);
			}
			
			while (toConvertUrl.startsWith(".")) {
				toConvertUrl = toConvertUrl.substring(1);
			}
			
			if (!toConvertUrl.startsWith("/")) {
				toConvertUrl = "/" + toConvertUrl;
			}
			latestUrl = prefixUrl + toConvertUrl;
		} 
		
		return latestUrl;
	}
	
	/**
	 * 在字符串中查询指定第几个字符的索引
	 * @param str 			源字符串
	 * @param c				待搜索目标字符
	 * @param charNum		第几个目标字符		
	 * @return	符合要求的目标字符位置
	 * @author chitianxiang $9th April, 2012 - 10:25 a.m
	 */
	private static int indexOf(String str, char c, int charNum) {
		int index = -1;		//目标位置
		int count = 0; 		//第几个目标
		if (str == null || str.length() == 0) {
			return -1;
		}
		
		if (charNum <= 0) {
			throw new IllegalArgumentException("第几个目标必须为正整数");
		}
		
		for (int i = 0, len = str.length(); i < len; i++) {
			if (str.codePointAt(i) == c) {
				count++;
			}
			if (count == charNum) {
				index = i;
				break;
			}
		}
		
		if (charNum > count) {
			throw new IndexOutOfBoundsException("设置第几个目标过长,没有那么多目标");
		}
		
		return index;
	}


 运用:

String sourceUrl = "http://www.wed114.cn/jiehun/shishanghunli/hunlicehua/";
String toConvertUrl = "/jiehun/shishanghunli/hunlicehua/201106/1496.html";   
getFullurl(sourceUrl, toConvertUrl);
http://www.wed114.cn/jiehun/shishanghunli/hunlicehua/201106/1496.html


String sourceUrl = "http://www.wed114.cn/jiehun/shishanghunli/hunlicehua/";
String toConvertUrl = "/shishanghunli/hunlicehua/201106/1496.html";   
getFullurl(sourceUrl, toConvertUrl, 2);
http://www.wed114.cn/jiehun/shishanghunli/hunlicehua/201106/1496.html
分享到:
评论

相关推荐

    java中文自动补全

    - **模糊匹配**:在某些场景下,用户可能输入不完整的拼音或错别字,可以引入Levenshtein距离、Jaccard相似度等模糊匹配算法,找出近似的补全建议。 3. **用户输入处理**: - 监听键盘输入,当用户停止输入一段...

    网页Html抓取爬虫测试工具

    4. 自动化抓取:支持批量处理多个URL,自动抓取并应用正则表达式进行数据提取。 5. 保存和导入设置:允许用户保存成功的正则表达式和相关配置,方便日后重复使用。 通过这个工具,开发者可以快速验证正则表达式的...

    基于Python实现的审计工具箱源码,快递截图、工商截图、询证函处理、地址复核、海关查询、公告下载、地址补全

    对于地址补全,可能使用了地址补全服务,如Google Places API,或者通过大数据分析和机器学习方法,根据已有的地址数据推测并补全不完整的地址信息。 这个审计工具箱整体上利用了Python的强大库支持,实现了自动化...

    PHP实现HTML标签自动补全代码

    本知识点将详细介绍如何利用PHP实现HTML标签的自动补全代码,以及如何处理在截取HTML字符串时遇到的问题。 首先,要解决的问题是在截取HTML字符串时,常常会遇到HTML标签没有闭合的情况,这会对网页的显示效果和...

    图像轮廓缺陷修补

    然而,传统的边缘检测技术,例如Canny算子,尽管可以提取出清晰的目标轮廓,但常常产生不完整的轮廓,即存在缺陷的轮廓。这就使得图像轮廓缺陷修补成为了进一步提高图像处理质量的一个必要步骤。 图像轮廓缺陷修补...

    google_autocomplete

    5. **错误处理和安全性**:考虑到网络环境的复杂性,代码可能包含了错误处理机制,确保在API请求失败或数据不完整时仍能正常运行。同时,为了防止滥用和保护API密钥,可能有相应的安全措施。 6. **性能优化**:对于...

    jsoup api

    - 解析时,jsoup会尝试修复不完整的HTML结构,例如补全未闭合的标签,处理隐式标签,并构建可靠的文档结构。 2. **解析HTML字符串** - 当HTML字符串来自不可信源时,`Jsoup.parse(String html, String baseUri)`...

    搜索引擎原理完整教程

    当用户输入查询时,搜索引擎需要迅速解析查询意图,可能涉及关键词匹配、拼写纠错、自动补全等功能。查询结果通常以搜索结果页的形式呈现,包括标题、摘要、URL等信息,方便用户快速浏览。 七、实时更新与优化 搜索...

    全国手机号码前缀匹配的归属地

    在处理这些数据时,我们需要关注数据的准确性、完整性以及合规性。手机号码涉及个人隐私,因此在使用时必须遵守相关法律法规,如《中华人民共和国网络安全法》等,确保数据的安全使用。 总结一下,这个数据集提供了...

    nekohtml+dom4j

    nekohtml是一个开源的Java库,它的主要功能是对不规范的HTML进行清理和补全,将其转换为符合XHTML标准的文档。HTML通常比XML松散,不遵循严格的规则,而nekohtml通过解析HTML源码,修正语法错误,添加缺失的闭合标签...

    搜索引擎源代码中国搜搜索引擎

    在分析中国搜搜索引擎的源代码时,我们可以深入理解其工作原理,包括信息抓取、索引构建、查询处理和结果排序等多个关键环节。 1. **信息抓取**:搜索引擎首先通过网络爬虫遍历互联网,抓取网页内容。中国搜可能...

    精选_基于Heritrix和Lucene实现的典故搜索引擎_源码打包

    然后,抓取到的数据会被处理和清洗,去除无用的信息,如广告、脚本等,保留有价值的文本内容。 接下来,Lucene开始发挥作用。它将清洗后的文本进行分词处理,创建倒排索引。倒排索引是一种高效的数据结构,它将每个...

    基于ASP的闪虎综合搜索引擎源码 v3.0.zip

    - **搜索建议和自动补全**:根据用户输入的前几个字符,实时推荐可能的完整查询词。 - **搜索日志分析**:记录和分析用户的搜索行为,为改进搜索引擎性能提供数据支持。 在学习和研究这个源码时,我们可以深入理解...

    网站整站下载

    然而,值得注意的是,尽管这些工具尽可能全面,但有时可能会出现“个别部分不完整下载”的情况。这可能由于多种原因,如动态内容加载、访问权限限制、网络连接问题或是下载器的配置不当。 1. 动态内容:许多现代...

    Python爬虫入门到实战 (二花) PDF版

    除了前面提到的requests和BeautifulSoup之外,还有如Scrapy这样的框架,它提供了一个快速开发爬虫的完整环境,能够处理数据管道、下载中间件、爬虫中间件等复杂需求。爬虫工作流程则是描述爬虫从启动到完成数据抓取...

    最新仿360网址导航

    这部分代码负责处理用户的请求,如搜索请求,以及与数据库的交互,存储和管理网址数据。数据库系统,如MySQL或MongoDB,用来存储各种网站链接和分类信息。 程序可能还包含了一些优化和安全特性。例如,搜索引擎优化...

    自己动手写搜索引擎光盘源码 第一章

    这可能涉及到多线程爬取、内存管理和数据库优化等技术,以确保系统在处理大规模数据时仍然能保持高效运行。 综上所述,这份源码提供了学习搜索引擎从抓取到检索全过程的一个基础平台,对于想入门搜索引擎技术的人来...

    人工智能-项目实践-搜索引擎-求医问药-健康咨询垂直搜索引擎

    1. **搜索引擎基础**:搜索引擎是一个能够抓取、索引、处理并提供用户查询结果的系统。在求医问药领域,搜索引擎需要专门针对医学术语、疾病名称、治疗方法等内容进行优化,确保能够准确匹配用户的健康问题。 2. **...

    HTMLPARSER2.0 JDK包

    这个库的设计目的是为了处理不规范或者半结构化的HTML,它允许开发者在处理网页内容时,不必过于担心HTML的语法错误。HTMLPARSER 2.0是其最新的版本,相较于之前的版本可能包含了性能优化和更多功能。 在Java开发中...

Global site tag (gtag.js) - Google Analytics