- 浏览: 247505 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
-
你的样子越来越美:
楼主是来炫耀的。
java图片处理解决方案 -
di1984HIT:
关注一下。
hypertable安装 -
di1984HIT:
katta好久不更新了。
Katta源码分析(1)--显示节点 -
tracyitbird:
谢谢博主,很好说的很明白。不过一般bin的环境变量已经配置好了 ...
解决Hadoop报Name node is in safe mode 错误 -
凌寒_微雨:
总结的很好
android 笔记——listView应用
htmlparser使用例子(全)
nekohtml经典小例子一个
nekohtml的2个小例子
htmlparser提取正文
htmlparser提取正文,提取新浪等门户首页是不太干净
httpclient htmlparser来查询手机号相关信息
httpclient htmlparser来查询手机号相关信息
http://htmlparser.com.cn/post/20090816119.html
import java.net.URL; import junit.framework.TestCase; import org.apache.log4j.Logger; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.Tag; import org.htmlparser.beans.LinkBean; import org.htmlparser.filters.NodeClassFilter; import org.htmlparser.filters.OrFilter; import org.htmlparser.filters.TagNameFilter; import org.htmlparser.tags.HeadTag; import org.htmlparser.tags.ImageTag; import org.htmlparser.tags.InputTag; import org.htmlparser.tags.LinkTag; import org.htmlparser.tags.OptionTag; import org.htmlparser.tags.SelectTag; import org.htmlparser.tags.TableColumn; import org.htmlparser.tags.TableRow; import org.htmlparser.tags.TableTag; import org.htmlparser.tags.TitleTag; import org.htmlparser.util.NodeIterator; import org.htmlparser.util.NodeList; import org.htmlparser.util.ParserException; import org.htmlparser.visitors.HtmlPage; import org.htmlparser.visitors.NodeVisitor; import org.htmlparser.visitors.ObjectFindingVisitor; public class T extends TestCase { private static final Logger logger = Logger.getLogger(T.class); public T(String name) { super(name); } /* * 测试ObjectFindVisitor的用法 */ public void testImageVisitor() { try { ImageTag imgLink; ObjectFindingVisitor visitor = new ObjectFindingVisitor(ImageTag.class); Parser parser = new Parser(); parser.setURL("http://www.google.com"); parser.setEncoding(parser.getEncoding()); parser.visitAllNodesWith(visitor); Node[] nodes = visitor.getTags(); for (int i = 0; i < nodes.length; i++) { imgLink = (ImageTag) nodes[i]; logger.fatal("testImageVisitor() ImageURL = " + imgLink.getImageURL()); logger.fatal("testImageVisitor() ImageLocation = " + imgLink.extractImageLocn()); logger.fatal("testImageVisitor() SRC = " + imgLink.getAttribute("SRC")); } } catch (Exception e) { e.printStackTrace(); } } /* * 测试TagNameFilter用法 */ public void testNodeFilter() { try { NodeFilter filter = new TagNameFilter("IMG"); Parser parser = new Parser(); parser.setURL("http://www.google.com"); parser.setEncoding(parser.getEncoding()); NodeList list = parser.extractAllNodesThatMatch(filter); for (int i = 0; i < list.size(); i++) { logger.fatal("testNodeFilter() " + list.elementAt(i).toHtml()); } } catch (Exception e) { e.printStackTrace(); } } /* * 测试NodeClassFilter用法 */ public void testLinkTag() { try { NodeFilter filter = new NodeClassFilter(LinkTag.class); Parser parser = new Parser(); parser.setURL("http://www.google.com"); parser.setEncoding(parser.getEncoding()); NodeList list = parser.extractAllNodesThatMatch(filter); for (int i = 0; i < list.size(); i++) { LinkTag node = (LinkTag) list.elementAt(i); logger.fatal("testLinkTag() Link is :" + node.extractLink()); } } catch (Exception e) { e.printStackTrace(); } } /* * 测试<link href=" text=’text/css’ rel=’stylesheet’ />用法 */ public void testLinkCSS() { try { Parser parser = new Parser(); parser.setInputHTML("<head><title>Link Test</title>" + "<link href=’/test01/css.css' text='text/css' rel='stylesheet' />" + "<link href='/test02/css.css' text='text/css' rel='stylesheet' />" + "</head>" + "<body>"); parser.setEncoding(parser.getEncoding()); for (NodeIterator e = parser.elements(); e.hasMoreNodes();) { Node node = e.nextNode(); logger.fatal("testLinkCSS()" + node.getText() + node.getClass()); } } catch (Exception e) { e.printStackTrace(); } } /* * 测试OrFilter的用法 */ public void testOrFilter() { NodeFilter inputFilter = new NodeClassFilter(InputTag.class); NodeFilter selectFilter = new NodeClassFilter(SelectTag.class); NodeList nodeList = null; try { Parser parser = new Parser(); parser .setInputHTML("<head><title>OrFilter Test</title>" + "<link href='/test01/css.css' text='text/css' rel='stylesheet' />" + "<link href='/test02/css.css' text='text/css' rel='stylesheet' />" + "</head>" + "<body>" + "<input type='text' value='text1′ name='text1′/>" + "<input type='text' value='text2′ name='text2′/>" + "<select><option id='1′>1</option><option id='2′>2</option><option id='3′></option></select>" + "<a href='http://www.yeeach.com'>yeeach.com</a>" + "</body>"); parser.setEncoding(parser.getEncoding()); OrFilter lastFilter = new OrFilter(); lastFilter.setPredicates(new NodeFilter[] { selectFilter, inputFilter }); nodeList = parser.parse(lastFilter); for (int i = 0; i <= nodeList.size(); i++) { if (nodeList.elementAt(i) instanceof InputTag) { InputTag tag = (InputTag) nodeList.elementAt(i); logger.fatal("OrFilter tag name is :" + tag.getTagName() + " ,tag value is:" + tag.getAttribute("value")); } if (nodeList.elementAt(i) instanceof SelectTag) { SelectTag tag = (SelectTag) nodeList.elementAt(i); NodeList list = tag.getChildren(); for (int j = 0; j < list.size(); j++) { OptionTag option = (OptionTag) list.elementAt(j); logger.fatal("OrFilter Option" + option.getOptionText()); } } } } catch (ParserException e) { e.printStackTrace(); } } /* * 测试对<table><tr><td></td></tr></table>的解析 */ public void testTable() { Parser myParser; NodeList nodeList = null; myParser = Parser.createParser("<body> " + "<table id='table1′ >" + "<tr><td>1-11</td><td>1-12</td><td>1-13</td>" + "<tr><td>1-21</td><td>1-22</td><td>1-23</td>" + "<tr><td>1-31</td><td>1-32</td><td>1-33</td></table>" + "<table id='table2′ >" + "<tr><td>2-11</td><td>2-12</td><td>2-13</td>" + "<tr><td>2-21</td><td>2-22</td><td>2-23</td>" + "<tr><td>2-31</td><td>2-32</td><td>2-33</td></table>" + "</body>", "GBK"); NodeFilter tableFilter = new NodeClassFilter(TableTag.class); OrFilter lastFilter = new OrFilter(); lastFilter.setPredicates(new NodeFilter[] { tableFilter }); try { nodeList = myParser.parse(lastFilter); for (int i = 0; i <= nodeList.size(); i++) { if (nodeList.elementAt(i) instanceof TableTag) { TableTag tag = (TableTag) nodeList.elementAt(i); TableRow[] rows = tag.getRows(); for (int j = 0; j < rows.length; j++) { TableRow tr = (TableRow) rows[j]; TableColumn[] td = tr.getColumns(); for (int k = 0; k < td.length; k++) { logger.fatal("<td>" + td[k].toPlainTextString()); } } } } } catch (ParserException e) { e.printStackTrace(); } } /* * 测试NodeVisitor的用法,遍历所有节点 */ public void testVisitorAll() { try { Parser parser = new Parser(); parser.setURL("http://www.google.com"); parser.setEncoding(parser.getEncoding()); NodeVisitor visitor = new NodeVisitor() { public void visitTag(Tag tag) { logger.fatal("testVisitorAll() Tag name is :" + tag.getTagName() + " \n Class is :" + tag.getClass()); } }; parser.visitAllNodesWith(visitor); } catch (ParserException e) { e.printStackTrace(); } } /* * 测试对指定Tag的NodeVisitor的用法 */ public void testTagVisitor() { try { Parser parser = new Parser("<head><title>dddd</title>" + "<link href='/test01/css.css' text='text/css' rel='stylesheet' />" + "<link href='/test02/css.css' text='text/css' rel='stylesheet' />" + "</head>" + "<body>" + "<a href='http://www.yeeach.com'>yeeach.com</a>" + "</body>"); NodeVisitor visitor = new NodeVisitor() { public void visitTag(Tag tag) { if (tag instanceof HeadTag) { logger.fatal("visitTag() HeadTag : Tag name is :" + tag.getTagName() + " \n Class is :" + tag.getClass() + "\n Text is :" + tag.getText()); } else if (tag instanceof TitleTag) { logger.fatal("visitTag() TitleTag : Tag name is :" + tag.getTagName() + " \n Class is :" + tag.getClass() + "\n Text is :" + tag.getText()); } else if (tag instanceof LinkTag) { logger.fatal("visitTag() LinkTag : Tag name is :" + tag.getTagName() + " \n Class is :" + tag.getClass() + "\n Text is :" + tag.getText() + " \n getAttribute is :" + tag.getAttribute("href")); } else { logger.fatal("visitTag() : Tag name is :" + tag.getTagName() + " \n Class is :" + tag.getClass() + "\n Text is :" + tag.getText()); } } }; parser.visitAllNodesWith(visitor); } catch (Exception e) { e.printStackTrace(); } } /* * 测试HtmlPage的用法 */ public void testHtmlPage() { String inputHTML = "<html>" + "<head>" + "<title>Welcome to the HTMLParser website</title>" + "</head>" + "<body>" + "Welcome to HTMLParser" + "<table id='table1′ >" + "<tr><td>1-11</td><td>1-12</td><td>1-13</td>" + "<tr><td>1-21</td><td>1-22</td><td>1-23</td>" + "<tr><td>1-31</td><td>1-32</td><td>1-33</td></table>" + "<table id='table2′ >" + "<tr><td>2-11</td><td>2-12</td><td>2-13</td>" + "<tr><td>2-21</td><td>2-22</td><td>2-23</td>" + "<tr><td>2-31</td><td>2-32</td><td>2-33</td></table>" + "</body>" + "</html>"; Parser parser = new Parser(); try { parser.setInputHTML(inputHTML); parser.setEncoding(parser.getURL()); HtmlPage page = new HtmlPage(parser); parser.visitAllNodesWith(page); logger.fatal("testHtmlPage -title is :" + page.getTitle()); NodeList list = page.getBody(); for (NodeIterator iterator = list.elements(); iterator.hasMoreNodes();) { Node node = iterator.nextNode(); logger.fatal("testHtmlPage -node is :" + node.toHtml()); } } catch (ParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * 测试LinkBean的用法 */ public void testLinkBean() { Parser parser = new Parser(); LinkBean linkBean = new LinkBean(); linkBean.setURL("http://www.google.com"); URL[] urls = linkBean.getLinks(); for (int i = 0; i < urls.length; i++) { URL url = urls[i]; logger.fatal("testLinkBean() -url is :" + url); } } }
nekohtml经典小例子一个
public class Demo { public static String TextExtractor(Node root){ //若是文本节点的话,直接返回 if (root.getNodeType() == Node.TEXT_NODE) { return root.getNodeValue().trim(); } if(root.getNodeType() == Node.ELEMENT_NODE) { Element elmt = (Element) root; //抛弃脚本 if (elmt.getTagName().equals("STYLE") || elmt.getTagName().equals("SCRIPT")) return ""; NodeList children = elmt.getChildNodes(); StringBuilder text = new StringBuilder(); for (int i = 0; i < children.getLength(); i++) { text.append(TextExtractor(children.item(i))); } return text.toString(); } //对其它类型的节点,返回空值 return ""; } public static void main(String[] args) throws Exception{ //生成html parser DOMParser parser = new DOMParser(); //设置网页的默认编码 parser.setProperty( "http://cyberneko.org/html/properties/default-encoding", "gb18030"); //input file BufferedReader in = new BufferedReader(new FileReader("input.htm")); parser.parse(new InputSource(in)); Document doc = parser.getDocument(); //获得body节点,以此为根,计算其文本内容 Node body = doc.getElementsByTagName("BODY").item(0); System.out.println(TextExtractor(body)); } }
nekohtml的2个小例子
//获取网页里面的keywords和description public static void main(String[] argv) throws Exception { BufferedReader in = new BufferedReader(new FileReader("d:/163.html")); DOMParser parser = new DOMParser(); parser.setProperty( "http://cyberneko.org/html/properties/default-encoding", "gb2312"); parser.parse(new InputSource(in)); Document doc = parser.getDocument(); NodeList list = doc.getElementsByTagName("META"); for(int i = 0, n = list.getLength(); i < n ; i++){ Element e = (Element) list.item(i); if(e.getAttribute("name").equalsIgnoreCase("keywords")){ String keywords = e.getAttribute("content"); System.out.println("keywords: " + keywords); } if(e.getAttribute("name").equalsIgnoreCase("description")){ String description = e.getAttribute("content"); System.out.println(description); } } } ========================================================================== //2、test使用DOMFragmentParser,提取所有正文,由于没有过滤一些没用的标签,所以会有没用的信息打印,这个可以再事先过滤一下。 public static void main(String[] argv) throws Exception { DOMFragmentParser parser = new DOMFragmentParser(); HTMLDocument document = new HTMLDocumentImpl(); DocumentFragment fragment = document.createDocumentFragment(); parser.parse("http://sports.sina.com.cn/f1/2009-09-21/20104599271.shtml", fragment); print(fragment, ""); } /** Prints a node's class name. */ public static void print(Node node, String indent) { // System.out.println(indent + node.getClass().getName()); // System.out.println(node.getNodeType()); if (node.getNodeType() == Node.TEXT_NODE) { System.out.println(indent + node.getNodeValue()); } Node child = node.getFirstChild(); while (child != null) { print(child, indent + " "); child = child.getNextSibling(); } } }
htmlparser提取正文
htmlparser提取正文,提取新浪等门户首页是不太干净
import org.htmlparser.Parser; import org.htmlparser.beans.StringBean; import org.htmlparser.filters.NodeClassFilter; import org.htmlparser.parserapplications.StringExtractor; import org.htmlparser.tags.BodyTag; import org.htmlparser.util.NodeList; import org.htmlparser.util.ParserException; public class GetContent { public void getContentUsingStringBean(String url) { StringBean sb = new StringBean(); sb.setLinks(true); sb.setCollapse(true); sb.setReplaceNonBreakingSpaces(true);// If true regular space sb.setURL("http://www.blogjava.net/51AOP/archive/2006/07/19/59064.html"); System.out.println("The Content is :\n" + sb.getStrings()); } public void getContentUsingStringExtractor(String url, boolean link) { StringExtractor se = new StringExtractor(url); String text = null; try { text = se.extractStrings(link); System.out.println("The content is :\n" + text); } catch (ParserException e) { e.printStackTrace(); } } public void getContentUsingParser(String url) { NodeList nl; try { Parser p = new Parser(url); nl = p.parse(new NodeClassFilter(BodyTag.class)); BodyTag bt = (BodyTag) nl.elementAt(0); System.out.println(bt.toPlainTextString()); } catch (ParserException e) { e.printStackTrace(); } } public static void main(String[] args) { GetContent g = new GetContent(); // g.getContentUsingStringBean(""); // g.getContentUsingParser("http://www.blogjava.net/51AOP/archive/2006/07/19/59064.html"); g.getContentUsingStringExtractor("http://www.sina.com.cn/", false); }
httpclient htmlparser来查询手机号相关信息
httpclient htmlparser来查询手机号相关信息
http://htmlparser.com.cn/post/20090816119.html
public class GetMobile { /** * @author rrong_m 51jsp.cn * @throws IOException * @throws HttpException * @throws IOException * @throws HttpException * @throws ParserException */ public static String getPostString(String mobile) throws HttpException, IOException//发送数据51jsp.cn { HttpClient hc=new HttpClient(); PostMethod pm=new PostMethod("http://www.ip138.com:8080/search.asp"); hc.getParams().setContentCharset("gb2312"); pm.addParameter("mobile",mobile); pm.addParameter("action","mobile"); hc.executeMethod(pm); return pm.getResponseBodyAsString(); } public static void getMobileInfor(String poststring) throws ParserException { Parser parser=new Parser(poststring); NodeList nodelist=null; NodeFilter filter=new HasAttributeFilter("class","tdc2"); nodelist=parser.extractAllNodesThatMatch(filter); for(int i=0;i<nodelist.size();i++) { System.out.println(nodelist.elementAt(i).toPlainTextString().replace(" ","")); } } public static void main(String[] args) throws HttpException, IOException, ParserException { getMobileInfor(getPostString("1380001"));//直接填写想要查询的手机号码 } }
相关推荐
《视频编辑MP4 Parser代码与jar包》 MP4 Parser是一种强大的工具,专门用于处理和解析MP4格式的视频文件。MP4(MPEG-4 Part 14)是广泛应用于互联网上的多媒体容器格式,它能包含视频、音频、字幕、图像等多种媒体...
JavaParser是一个强大的开源库,主要用于解析、操作和生成Java源代码。这个压缩包中的内容可能包含了一系列使用JavaParser进行代码分析的示例或工具,特别是关于方法调用链的分析。这种方法调用链分析在软件工程中...
【C++与MFC源代码parser_demo解析】 C++是一种通用的编程语言,以其灵活性、高效性和面向对象的特性而闻名。MFC(Microsoft Foundation Classes)是微软为Windows平台开发的应用程序提供的一套C++库,它封装了...
【标题】"C++、MFC源代码parser_src"是一个关于使用C++编程语言和Microsoft Foundation Class (MFC)库开发解析器的源代码集合。这个项目可能涉及到编译原理和程序设计,其中parser_src可能是指解析器的源代码部分。 ...
- 搜索和替换HTML代码中的特定字符串。 - 自动化网页测试,模拟用户交互。 在Delphi中使用自定义或第三方HTML解析器时,需要注意兼容性问题,因为不同的HTML语法和浏览器实现可能存在差异。此外,处理异常和错误也...
**Log Parser Studio V2**,简称LPSV2.D2,是基于Microsoft的Log Parser 2.2开发的一款图形用户界面(GUI)工具。Log Parser 2.2本身是一款强大的命令行工具,能够分析和查询各种日志文件、文本文件甚至数据库中的...
5. **错误容忍**:HTML-Parser具有良好的错误恢复能力,可以处理不规范的HTML代码。 在实际应用中,`HTML-Parser`常与`LWP::UserAgent`(用于HTTP请求)和`URI`(处理URL)等模块结合,实现网页抓取和自动化数据...
Python中的`html5-parser`库是一个高效的HTML5解析器,它使用C语言编写,从而提供了比纯Python解析更快的速度。这个库是为了解决在处理大量HTML数据时,需要快速、准确地解析文档的需求。在Python开发中,尤其是在...
本篇文章将深入探讨如何实现一个类似`av_parser_parse2`的功能,这是FFmpeg中用于解析媒体数据的关键函数。我们将讨论NAL单元(Network Abstraction Layer Unit)在H264视频解码中的作用,以及`av_parser_parse2`在...
本压缩包"html_parser.rar"包含了一个用Delphi语言编写的HTML解析器,它利用了汇编内联技术来提高性能。Delphi是一种基于Object Pascal的高效能、面向对象的编程语言,常用于开发Windows桌面应用。 在解析HTML时,...
对html进行转换,适用爬虫/小程序富文本显示等;对html进行转换,适用爬虫/小程序富文本显示等对html进行转换,适用爬虫/小程序富文本显示等对html进行转换,适用爬虫/小程序富文本显示等
总结来说,`html-react-parser`是一个不可或缺的工具,它极大地简化了前端开发中HTML字符串与React组件之间的转换,提高了开发效率和代码的安全性。对于处理HTML数据或构建动态内容的React应用,它是理想的解决方案...
2. **代码格式化**:自动格式化代码,使其符合特定的编码规范。 3. **代码重构**:自动进行大规模的代码重构,如重命名变量、提取方法等。 4. **自动化生成代码**:根据需求自动生成 Java 代码,比如创建模板类或...
enju parser enju parser
html-dom-parser 在服务器(Node.js)和客户端(浏览器)上均可使用HTML到DOM解析器: HTMLDOMParser(string[, options])解析器将HTML字符串转换为描述DOM树JavaScript对象。例子const parse = require ( '...
XMLParser是一种用于解析XML文档的C++实现,它旨在提供简单、小巧且稳定的解决方案,以处理XML数据。...通过阅读TinyXMLParserSampleCode.pdf提供的示例代码,开发者可以快速掌握如何在实际项目中集成和使用XMLParser。
3. **错误处理与容错机制**: HTML DOM Parser通常包含良好的错误处理机制,能够处理不完整的HTML代码或非标准语法。这使得在处理来自用户输入或网络抓取的不完美HTML时,库能保持稳定,避免程序崩溃。 4. **API接口...
《gumbo-parser-0.10.1:HTML解析器详解及封装应用》 在Web开发领域,HTML解析器是不可或缺的一部分,它负责将HTML源代码转换为结构化的DOM(Document Object Model)树,便于程序处理和操作。gumbo-parser-0.10.1...
HTML解析器是用于处理HTML(超文本标记语言)文档的工具,它能够解析HTML源代码并生成DOM(文档对象模型)结构,使程序能够方便地访问和操作网页内容。在IT行业中,HTML解析器广泛应用于网页抓取、数据挖掘、自动化...
而"php-simple-html-dom-parser"是一个PHP库,专门用于处理和解析HTML文档,它提供了类似jQuery的API,使得操作HTML文档变得简单直观。这个包的Laravel版本则将这个强大的解析器集成到Laravel框架中,让开发者可以更...