【垂直搜索引擎搭建10】HtmlParser中Filter实践
来源:互联网 发布:app数据抓取 编辑:程序博客网 时间:2024/06/03 09:26
Filter种类:
判断类Filter:
TagNameFilter
HasAttributeFilter
HasChildFilter
HasParentFilter
HasSiblingFilter
IsEqualFilter
逻辑运算Filter:
AndFilter
NotFilter
OrFilter
XorFilter
其他Filter:
NodeClassFilter
StringFilter
LinkStringFilter
LinkRegexFilter
RegexFilter
CssSelectorNodeFilter
这里介绍一下TagNameFilter、HasChildFilter、HasAttributeFilter 和这几个filter的组合使用方法。
package org.algorithm;import org.htmlparser.NodeFilter;import org.htmlparser.Parser;import org.htmlparser.filters.AndFilter;import org.htmlparser.filters.HasAttributeFilter;import org.htmlparser.filters.HasChildFilter;import org.htmlparser.filters.TagNameFilter;import org.htmlparser.util.NodeList;import org.htmlparser.util.ParserException;import org.htmlparser.Node;public class FilterImg { public static void main(String[] args) throws ParserException { Parser parser = new Parser("http://smart.huanqiu.com/roll/2016-08/9351546.html"); NodeFilter filter = new TagNameFilter("p"); NodeList nodes = parser.extractAllNodesThatMatch(filter); Node source = nodes.elementAt(0); String sou = ""; if(source!=null){ sou = source.toString(); } System.out.println(sou); }}
场景一:
如果你想抓取页面中带有图片的链接,如何实现?方法很简单,采用一个链接的TagNameFilter,以及 具有图片的HasChildFilter,最后采用AndFilter将这两个串联起来,代码如下:
package org.algorithm;import org.htmlparser.NodeFilter;import org.htmlparser.Parser;import org.htmlparser.filters.AndFilter;import org.htmlparser.filters.HasAttributeFilter;import org.htmlparser.filters.HasChildFilter;import org.htmlparser.filters.TagNameFilter;import org.htmlparser.util.NodeList;import org.htmlparser.util.ParserException;import org.htmlparser.Node;public class FilterImg { public static void main(String[] args) throws ParserException { Parser parser = new Parser("http://smart.huanqiu.com/roll/2016-08/9351546.html"); NodeFilter filter = new AndFilter(new TagNameFilter ("a"),new HasChildFilter (new TagNameFilter ("img"))); NodeList nodes = parser.extractAllNodesThatMatch(filter); Node source = nodes.elementAt(0); String sou = ""; if(source!=null){ sou = source.toString(); } System.out.println(sou); }}
场景二:
对于<div class=”f”>
或<li class=”m”>
这种类型的页面代码,如何抓取里面的内容。方式也不难,还是采用三个filter来实现,TagNameFilter,HasAttributeFilter 和AndFilter,代码如下:
package org.algorithm;import org.htmlparser.NodeFilter;import org.htmlparser.Parser;import org.htmlparser.filters.AndFilter;import org.htmlparser.filters.HasAttributeFilter;import org.htmlparser.filters.HasChildFilter;import org.htmlparser.filters.TagNameFilter;import org.htmlparser.util.NodeList;import org.htmlparser.util.ParserException;import org.htmlparser.Node;public class FilterImg { public static void main(String[] args) throws ParserException { Parser parser = new Parser("http://smart.huanqiu.com/roll/2016-08/9351546.html"); NodeFilter filter = new AndFilter(new TagNameFilter("p"),new HasAttributeFilter("title")); NodeList nodes = parser.extractAllNodesThatMatch(filter); Node source = nodes.elementAt(0); String sou = ""; if(source!=null){ sou = source.toString(); } System.out.println(sou); }}
0 0
- 【垂直搜索引擎搭建10】HtmlParser中Filter实践
- 【垂直搜索引擎搭建13】HtmlParser中Visitor实践
- 【垂直搜索引擎搭建14】HtmlParser中Filter方法(URL网络地址)
- 【垂直搜索引擎搭建15】HtmlParser中Filter方法(本地URL地址)
- 【垂直搜索引擎搭建08】HtmlParser构建
- 【垂直搜索引擎搭建09】HtmlParser案例代码
- 【垂直搜索引擎搭建12】htmlparser简介
- 【垂直搜索引擎搭建11】使用htmlparser获取页面的字符编码encoding
- HtmlParser filter
- Htmlparser Filter
- 【垂直搜索引擎搭建01】heritrix环境搭建
- 【垂直搜索引擎搭建00】说在前面的话
- 【垂直搜索引擎搭建02】heritrix启动
- 【垂直搜索引擎搭建04】heritrix:扩展Extractor
- 【垂直搜索引擎搭建07】heritrix工具化
- 垂直搜索引擎
- 垂直搜索引擎框架(更新中)
- HTMLParser 过滤Filter
- React native:我的windows环境
- [Python]一起来写一个Python爬虫工具类whyspider
- 什么是原子性(r)
- Jmeter+fidder接口测试案例
- kubernetes调度组件kube-scheduler源码分析
- 【垂直搜索引擎搭建10】HtmlParser中Filter实践
- A Self-paced Multiple-instance Learning Framework for Co-saliency Detection文章阅读
- JVM——Java类加载机制总结
- Dubbo-----'消费方'注解引用'提供方'的接口时报空指针
- 解决qextserialport-1.2rc在window下编译提示“DEVICE_NOTIFY_ALL_INTERFACE_CLASSES”未定义错误
- 分页的总页数算法
- GitHub详细教程
- Flurry analytics SDK集成步骤及功能简介
- Jquery dataTables api 配置笔记