`
liuxiang822
  • 浏览: 48197 次
  • 性别: Icon_minigender_1
  • 来自: 常州
社区版块
存档分类
最新评论

初试htmlCleaner结合Xpath

 
阅读更多
//import java.io.File;
import java.io.IOException;
import java.net.URL;
import org.htmlcleaner.CleanerProperties;
import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.PrettyXmlSerializer;
import org.htmlcleaner.TagNode;
import org.htmlcleaner.XPatherException;
//import com.sun.xml.internal.txw2.output.XmlSerializer;

/**
 * 数据抓取
 */
public class HtmlClean {

	@SuppressWarnings("deprecation")
	/**
	 * 数据抓取
	 */
	public void cleanHtml(String htmlurl, String xmlurl, String xpath) throws XPatherException {
		try {
			//将目标网址内容抓取下来存到本地的XML文件中(格式化)
			//long start = System.currentTimeMillis();
			HtmlCleaner cleaner = new HtmlCleaner();
			CleanerProperties props = cleaner.getProperties();
			props.setUseCdataForScriptAndStyle(true);
			props.setRecognizeUnicodeChars(true);
			props.setUseEmptyElementTags(true);
			props.setAdvancedXmlEscape(true);
			props.setTranslateSpecialEntities(true);
			props.setBooleanAttributeValues("empty");
			TagNode node = cleaner.clean(new URL(htmlurl));
//			System.out.println(in);
			//System.out.println(((TagNode) ns[0]).getText());
			//System.out.println("vreme:" + (System.currentTimeMillis() - start));
			new PrettyXmlSerializer(props).writeXmlToFile(node, xmlurl);//格式化保存
			String result = new PrettyXmlSerializer(props).getXmlAsString(node);
			//System.out.println("vreme:" + (System.currentTimeMillis() - start));
			System.out.println("*********************************************************");
			//
			//
			//TagNode Xmlnode = cleaner.clean(new URL(xmlurl));//从已经格式化的XML文件中取出所要的数据
			TagNode Xmlnode = cleaner.clean(new String(result));//从已格式化的String中取出所要的数据
			Object[] ns = Xmlnode.getElementsByName("title", true); // 标题
			if (ns.length > 0) {
				System.out.println("title=" + ((TagNode) ns[0]).getText());
			}
			ns = Xmlnode.evaluateXPath(xpath); // 选取class为指定dixian1的所有td标签
//			for (int i = 0; i < ns.length; i++) {
//				String in = cleaner.getInnerHtml((TagNode) ns[i]);
//				System.out.println("<span>" + in + "</span>");
//			}
			System.out.println("*********************************************************");
			String in = cleaner.getInnerHtml((TagNode) ns[0]);
			for(int i=0 ;i<ns.length ;i++){
				in = cleaner.getInnerHtml((TagNode) ns[i]);
				System.out.println(in);
				if((i+1)%8==0){
					System.out.println("*********************************************************");
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) throws XPatherException {
		HtmlClean cleaner = new HtmlClean();
		cleaner.cleanHtml("http://app.sipo.gov.cn:8080/sipo2008/searchfee/searchfee_action.jsp?sqh=01351345.1", "E://text/test.xml","//td[@class='dixian1']");
	}
}
 
分享到:
评论

相关推荐

    Sax解析结合Xpath的用法

    总的来说,SAX结合XPath的使用方式能够让我们在处理XML文档时既保持了内存效率(因为SAX的流式处理),又具备了XPath的强大定位能力。这对于处理大量XML数据和需要动态查找特定信息的场景非常有用。通过学习和掌握这...

    htmlcleaner使用方法及xpath语法初探

    总结来说,HtmlCleaner结合XPath提供了一套强大的HTML解析和数据抽取解决方案。通过学习和熟练掌握这两者,开发者可以更高效地处理HTML文档,从中获取所需的信息,这对于Web开发、爬虫编写以及数据分析等领域具有极...

    Dom4j结合XPath解析XML文件路径表达式

    本篇文章将深入探讨如何使用Dom4j,一个流行的Java库,结合XPath来解析XML文件中的路径表达式,同时阐述相对路径和绝对路径的匹配原则。 首先,我们要了解Dom4j库。Dom4j是一个灵活且高效的处理XML的Java库,它提供...

    Xpath生成器,自动生成XPATH,C#版

    XPath(XML Path Language)是一种在XML文档中查找信息的语言,它是W3C组织制定的一种标准查询...C#作为.NET框架的主要编程语言,提供了丰富的XML处理支持,结合这个XPath生成器,可以更好地进行XML相关的开发工作。

    XPathHelper_2.0.2.zip

    XPathHelper_2.0.2.zip 是一个包含XPath Helper Chrome扩展程序的压缩文件,版本为2.0.2。XPath Helper是一款非常实用的...熟悉XPath的使用,结合XPath Helper这样的工具,可以帮助开发者更有效地处理XML和HTML数据。

    IE下获取XPATH小工具源码_xpath_

    XPath,全称XML Path Language,是一种在XML文档中查找信息的语言。它被设计用来选取XML文档中的节点,如元素、属性、文本等。在IE浏览器下,为了方便开发者获取XML或HTML文档中的XPath路径,存在一种小工具,本文将...

    xpath-helper.zip

    总的来说,XPath和lxml是Python爬虫开发中的关键工具,它们的结合使用能够有效地解析和抽取网页数据。而"xpath-helper.crx"这个扩展程序则是开发过程中的一大利器,它提高了开发者的工作效率,降低了调试难度,使得...

    JDOM中XPath.selectNodes()和XPath.selectSingleNode()用法

    在实际应用中,JDOM结合XPath可以极大地提高处理XML文档的效率和灵活性。例如,你可以在Web服务、配置文件处理、数据交换等多个场景中利用它们的功能。了解并熟练掌握这两个方法,将有助于你更好地驾驭XML文档的处理...

    谷歌浏览器XPath2.0插件

    XPath(XML Path Language)是一种在XML文档中查找信息的语言,它允许我们通过路径表达式来选取节点,比如元素、属性和文本等。XPath 2.0是XPath的第二个主要版本,增加了更多的功能和优化。 在没有XPath Helper的...

    Xpath指南XPATH实例

    通过上述知识点,结合提供的实例,读者可以逐步掌握XPath的使用,实现高效地在XML文档中导航和提取数据。在“XPath指南”的22个实例中,每个实例都将涵盖上述的一个或多个知识点,通过实践加深理解。这些实例涵盖了...

    XPath教程

    在XSL中,XPath常与模板匹配结合使用,通过选取特定的XML节点并应用样式规则进行转换。例如,以下XSL模板使用XPath选取所有“price”元素,并将其格式化: ```xml 价格: ``` 此外,XPath还可以在其他XML...

    XPath Helper版本2.0.2

    XPath Helper是一款非常实用的工具,尤其对于Web开发者和数据抓取者来说,它极大地简化了在网页中查找和提取信息的过程。版本2.0.2是这个插件的一个更新,旨在提供更稳定、高效的功能。XPath(XML Path Language)是...

    xpath-helper 插件及使用方法

    3. **正则表达式辅助**:虽然XPath主要用于选取XML或HTML节点,但XPath Helper可能也支持结合正则表达式进行数据提取,这在处理复杂或不规则的数据格式时尤其有用。 4. **消息中间件集成**:在大型项目中,数据抓取...

    火狐老版本+xpath插件(适合python+xpath爬虫使用)

    在Python爬虫中,XPath通常与`lxml`库结合使用。`lxml`是一个高效且功能强大的XML和HTML处理库,它支持XPath 1.0规范。使用XPath表达式,开发者可以轻松地选取HTML树中的特定节点,获取文本、属性值,甚至可以进行...

    Xpath生成器,自动生成可用的Xpath。

    Xpath生成器,可以通过输入的文件,进行匹配,生成全部可用的Xpath,犹豫HTML中部分标签允许无结束,如:("LINK" ,"META","SCRIPT","IMG" ,"INPUT", "FORM")故已经被忽略,如有朋友发现其中有问题,请告诉我哦...

    XpathDemo.zip

    现在常用的网页解析工具有:Jsoup,JsoupXpath,HtmlCleaner。 jsoup 是一款Java 的XML、HTML解析器,可直接解析某个URL地址、HTML文本内容和已经存在的文件。 JsoupXPath是基于Jsoup的拓展,使用路径的形式解析XML...

    xpath_helper.zip

    通过熟练掌握XPath的使用,结合XPath Helper,你可以在网页数据抓取和解析过程中事半功倍。所以,如果你经常涉及XML或HTML的工作,强烈推荐你尝试这款工具,相信它会成为你日常工作中的一大利器。

    xpath 依赖包及开发手册

    结合Jaxen,DOM4J可以方便地利用XPath进行高效的XML数据提取和操作。 在开发过程中,`XPathTutorial.chm`文件是一个重要的参考资料。CHM是Microsoft编写的HTML帮助文件格式,通常包含教程、指南或API文档。这个...

    网页爬虫demo 带htmlcleaner jar包

    本资源提供了一个基于HTMLCleaner的网页爬虫DEMO,帮助初学者理解如何使用HTMLCleaner这个库来提取网页内容。 HTMLCleaner是一款Java库,专门设计用于清理和解析HTML和XML文档。它可以帮助处理不规范的HTML,将其...

    XPath Helpe4.zip

    5. 消息中间件和多线程调度框架:在大规模的网页抓取项目中,XPath Helper可能与其他技术结合,如消息中间件(如RabbitMQ或Kafka)用于处理异步数据流,多线程或分布式框架(如Scrapy或Puppeteer)来提升抓取速度。...

Global site tag (gtag.js) - Google Analytics