java htmlparser 使用教程_htmlparser使用指南

本文主要介绍Java中HtmlParser的使用,包含采用Visitor和Filter方式访问HTML的代码示例,如设置URL、编码,使用NodeVisitor、NodeFilter等进行节点访问和提取。还提及相关项目,如nekohtml可将HTML转为标准XML文档,不过文档较少。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.*采用Visitor方式访问Html2.3.try{4.     Parser parser=newParser();5.     parser.setURL(”http://www.google.com”);6.     parser.setEncoding(parser.getEncoding());7.     NodeVisitor visitor=newNodeVisitor() {8.publicvoidvisitTag(Tag tag) {9.             logger.fatal(”testVisitorAll()  Tag name is :”10.+tag.getTagName()+” \n Class is :”11.+tag.getClass());12.         }13.14.     };15.16.     parser.visitAllNodesWith(visitor);17. }catch(ParserException e) {18.     e.printStackTrace();19. }20.21.*采用Filter方式访问html22.23.try{24.25.     NodeFilter filter=newNodeClassFilter(LinkTag.class);26.     Parser parser=newParser();27.     parser.setURL(”http://www.google.com”);28.     parser.setEncoding(parser.getEncoding());29.     NodeList list=parser.extractAllNodesThatMatch(filter);30.for(inti=0; i

149.*/150.publicvoidtestImageVisitor() {151.try{152.             ImageTag imgLink;153.             ObjectFindingVisitor visitor=newObjectFindingVisitor(154.                     ImageTag.class);155.             Parser parser=newParser();156.             parser.setURL(”http://www.google.com”);157.             parser.setEncoding(parser.getEncoding());158.             parser.visitAllNodesWith(visitor);159.             Node[] nodes=visitor.getTags();160.for(inti=0; i

176.*/177.publicvoidtestNodeFilter() {178.try{179.             NodeFilter filter=newTagNameFilter(”IMG”);180.             Parser parser=newParser();181.             parser.setURL(”http://www.google.com”);182.             parser.setEncoding(parser.getEncoding());183.             NodeList list=parser.extractAllNodesThatMatch(filter);184.for(inti=0; i

194.*/195.publicvoidtestLinkTag() {196.try{197.198.             NodeFilter filter=newNodeClassFilter(LinkTag.class);199.             Parser parser=newParser();200.             parser.setURL(”http://www.google.com”);201.             parser.setEncoding(parser.getEncoding());202.             NodeList list=parser.extractAllNodesThatMatch(filter);203.for(inti=0; i用法

214.*/215.publicvoidtestLinkCSS() {216.try{217.218.             Parser parser=newParser();219.             parser220.                     .setInputHTML(”

Link Test”221.+“”222.+“”223.+“”+“”);224.             parser.setEncoding(parser.getEncoding());225.             NodeList nodeList=null;226.227.for(NodeIterator e=parser.elements(); e.hasMoreNodes();) {228.                 Node node=e.nextNode();229.                 logger230.                         .fatal(”testLinkCSS()”+node.getText()231.+node.getClass());232.233.             }234.         }catch(Exception e) {235.             e.printStackTrace();236.         }237.     }238./*239.      * 测试OrFilter的用法

240.*/241.publicvoidtestOrFilter() {242.         NodeFilter inputFilter=newNodeClassFilter(InputTag.class);243.         NodeFilter selectFilter=newNodeClassFilter(SelectTag.class);244.         Parser myParser;245.         NodeList nodeList=null;246.247.try{248.             Parser parser=newParser();249.             parser250.                     .setInputHTML(”

OrFilter Test”251.+“”252.+“”253.+“”254.+“”255.+“”256.+“”257.+“12”258.+“ yeeach.com”259.+“”);260.261.             parser.setEncoding(parser.getEncoding());262.             OrFilter lastFilter=newOrFilter();263.             lastFilter.setPredicates(newNodeFilter[] { selectFilter,264.                     inputFilter });265.             nodeList=parser.parse(lastFilter);266.for(inti=0; i<=nodeList.size(); i++) {267.if(nodeList.elementAt(i)instanceofInputTag) {268.                     InputTag tag=(InputTag) nodeList.elementAt(i);269.                     logger.fatal(”OrFilter tag name is :”+tag.getTagName()270.+” ,tag value is:”+tag.getAttribute(”value”));271.                 }272.if(nodeList.elementAt(i)instanceofSelectTag) {273.                     SelectTag tag=(SelectTag) nodeList.elementAt(i);274.                     NodeList list=tag.getChildren();275.276.for(intj=0; j的解析

292.*/293.publicvoidtestTable() {294.         Parser myParser;295.         NodeList nodeList=null;296.         myParser=Parser.createParser(”

”+“
1-111-121-13
1-211-221-23
1-311-321-33
”300.+“
2-112-122-13
2-212-222-23
2-312-322-33
”304.+“”, “GBK”);305.         NodeFilter tableFilter=newNodeClassFilter(TableTag.class);306.         OrFilter lastFilter=newOrFilter();307.         lastFilter.setPredicates(newNodeFilter[] { tableFilter });308.try{309.             nodeList=myParser.parse(lastFilter);310.for(inti=0; i<=nodeList.size(); i++) {311.if(nodeList.elementAt(i)instanceofTableTag) {312.                     TableTag tag=(TableTag) nodeList.elementAt(i);313.                     TableRow[] rows=tag.getRows();314.315.for(intj=0; j”+td[k].toPlainTextString());320.                         }321.322.                     }323.324.                 }325.             }326.327.         }catch(ParserException e) {328.             e.printStackTrace();329.         }330.     }331./*332.      * 测试NodeVisitor的用法,遍历所有节点

333.*/334.publicvoidtestVisitorAll() {335.try{336.             Parser parser=newParser();337.             parser.setURL(”http://www.google.com”);338.             parser.setEncoding(parser.getEncoding());339.             NodeVisitor visitor=newNodeVisitor() {340.publicvoidvisitTag(Tag tag) {341.                     logger.fatal(”testVisitorAll()  Tag name is :”342.+tag.getTagName()+” \n Class is :”343.+tag.getClass());344.                 }345.346.             };347.348.             parser.visitAllNodesWith(visitor);349.         }catch(ParserException e) {350.             e.printStackTrace();351.         }352.     }353./*354.      * 测试对指定Tag的NodeVisitor的用法

355.*/356.publicvoidtestTagVisitor() {357.try{358.359.             Parser parser=newParser(360.                     “

dddd”361.+“”362.+“”363.+“”+“”364.+“ yeeach.com”365.+“”);366.             NodeVisitor visitor=newNodeVisitor() {367.publicvoidvisitTag(Tag tag) {368.if(taginstanceofHeadTag) {369.                         logger.fatal(”visitTag() HeadTag : Tag name is :”370.+tag.getTagName()+” \n Class is :”371.+tag.getClass()+“\n Text is :”372.+tag.getText());373.                     }elseif(taginstanceofTitleTag) {374.                         logger.fatal(”visitTag() TitleTag : Tag name is :”375.+tag.getTagName()+” \n Class is :”376.+tag.getClass()+“\n Text is :”377.+tag.getText());378.379.380.                     }elseif(taginstanceofLinkTag) {381.                         logger.fatal(”visitTag() LinkTag : Tag name is :”382.+tag.getTagName()+” \n Class is :”383.+tag.getClass()+“\n Text is :”384.+tag.getText()+” \n getAttribute is :”385.+tag.getAttribute(”href”));386.                     }else{387.                         logger.fatal(”visitTag() : Tag name is :”388.+tag.getTagName()+” \n Class is :”389.+tag.getClass()+“\n Text is :”390.+tag.getText());391.                     }392.393.                 }394.395.             };396.397.             parser.visitAllNodesWith(visitor);398.         }catch(Exception e) {399.             e.printStackTrace();400.         }401.     }402./*403.      * 测试HtmlPage的用法

404.*/405.publicvoidtestHtmlPage() {406.         String inputHTML=“”+“

”407.+“Welcome to the HTMLParser website”408.+“”+“”+“Welcome to HTMLParser”409.+“
1-111-121-13
1-211-221-23
1-311-321-33
”413.+“
2-112-122-13
2-212-222-23
2-312-322-33
”417.+“”+“”;418.         Parser parser=newParser();419.try{420.             parser.setInputHTML(inputHTML);421.             parser.setEncoding(parser.getURL());422.             HtmlPage page=newHtmlPage(parser);423.             parser.visitAllNodesWith(page);424.             logger.fatal(”testHtmlPage-title is :”+page.getTitle());425.             NodeList list=page.getBody();426.427.for(NodeIterator iterator=list.elements(); iterator428.                     .hasMoreNodes();) {429.                 Node node=iterator.nextNode();430.                 logger.fatal(”testHtmlPage-node  is :”+node.toHtml());431.             }432.433.         }catch(ParserException e) {434.//TODO Auto-generated catch block435.             e.printStackTrace();436.         }437.     }438./*439.      * 测试LinkBean的用法

440.*/441.publicvoidtestLinkBean() {442.         Parser parser=newParser();443.444.         LinkBean linkBean=newLinkBean();445.         linkBean.setURL(”http://www.google.com”);446.         URL[] urls=linkBean.getLinks();447.448.for(inti=0; i

5、相关的项目

nekohtml

:评价比htmlparser好,把html正规化标准的xml文档,用xerces处理,但文档较少。

其他一些html parser可以参考相关的汇总文章:

6、参考文档

crawler,爬虫,htmlparser,nekohtml,scrape,scraping,spider

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值