使用Nutch能抓取针对性的内容吗

例如网页中的新闻而不是整个页面... 例如网页中的新闻而不是整个页面 展开
 我来答
大大大大大大川儿
2014-01-08 · TA获得超过108个赞
知道答主
回答量:79
采纳率:90%
帮助的人:30.9万
展开全部
可以,修改一下nutch的插件就行了。由于好久没你那个nutch了,那时候还是1.0,不过nutch在spider这块的插件应该没什么变动。
首先你要知道你要抓取的新闻的div
修改parse-html插件,HtmlParser.java这个文件。因为我这边没有环境,刚从官网上下了个1.7的源码,对着里面的和你说。我们要修改的方法是private DocumentFragment parse(InputSource input) 这个方法,你可以debug一下,input里面,就是抓取的页面里的内容,(如果不是,你再从其他的方法里找找)
然后创建一个分析input的方法。在里面用htmlparser把你要的结构拿出来。不过htmlarser有BUG,而且很久都没有更新了,建议你用Jsoup。我的日志里面用的是htmlparser,所以你改改就可以。
public InputSource getinput(InputSource input){ String str=""; try { BufferedReader isr = new BufferedReader(newInputStreamReader(input.getByteStream(),"utf-8")); while(isr.ready()){ str+=(char)isr.read(); } } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { Parser p = new Parser(str); p.setEncoding("utf-8"); NodeFilter filter=new AndFilter(newTagNameFilter("div"),new HasAttributeFilter("class","mconleft")); NodeList nodelist=p.parse(filter);
NodeIterator it=nodelist.elements(); if(!it.hasMoreNodes()){ input.setByteStream(newByteArrayInputStream(str.getBytes("utf-8"))); return input; } while(it.hasMoreNodes()){ Node node=(Node)it.nextNode(); input.setByteStream(newByteArrayInputStream(node.toHtml().getBytes("UTF-8"))); } } catch (ParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return input; }
从代码上你能看到,我这里只抓取 DIV的class叫mconleft的。把你要抓取的新闻的div替换这块就可以了,然后将方法应用的parse(InputSource input)里面,然后从新ant一下nutch,把war包放到tomat下面试试。
基本上就是这样了,可能还有其他的更简单的方法。当时急着用nutch,就没具体的研究,现在也不弄了,呵呵
纯手打,希望能帮到你
erliang20088
2014-01-21 · TA获得超过2496个赞
知道小有建树答主
回答量:926
采纳率:100%
帮助的人:954万
展开全部
1、nutch适合于漫爬型的爬虫,对内容没有精准或块的挑选,如果想要精准的内容模块的话,往往还是定制爬虫的合适。
2、像楼主的需求,更应该是爬到页面后,在分析阶段去解析和过滤之后,得到最后想要的东西。
比较简洁,不知能解决问题否。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式