我正在尝试建立一个专门的搜索引擎网站,为有限数量的网站编制索引.我想出的解决方案是:
问题是我发现Nutch非常复杂,而且它是一个很大的自定义软件,尽管事实上不存在详细的文档(书籍,最近的教程......等).
现在问题:
谢谢
我试图抓取网站,更具体地Google Site
使用ManifoldCF
具有SAML认证和索引抓取的数据到Apache Solr实现.但是当我抓取URL时,它会让我302
重定向到登录页面然后说RESPONSECODENOTINDEXABLE
.
我不确定我是否正确认证.在manifoldCF中,我们有HTTP basic
身份验证选项NTLM authentication
和Session-based
访问凭证身份验证方法.我使用的Session based
身份验证方法更像是基于表单的身份验证而不是SAML
身份验证.
有没有人使用带有SAML
身份验证的manifoldCF来抓取网站?如果没有manifoldCF
,有人能够通过Apache Nutch实现这一点,因为我担心,它也只提供HTTP
基本Digest
和NTLM
身份验证.
任何见解都会有所帮助.如果有人认为可以轻松完成,可以提供有关该问题的更多信息.基本上,当我抓取https://sites.google.com/a/my-sub-domain.com时,它会重定向到SSO登录页面,并且抓取工具拒绝抓取任何更多,从而产生302错误.这是一个基于内联网的网站.
我需要访问lucene索引(通过使用Nutch抓取几个网页创建)但它给出了上面显示的错误:
java.io.FileNotFoundException: no segments* file found in org.apache.lucene.store.FSDirectory@/home/<path>: files:
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:516)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:185)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:148)
at DictionaryGenerator.generateDict(DictionaryGenerator.java:24)
at DictionaryGenerator.main(DictionaryGenerator.java:56)
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索,但给出的理由不符合要求.显示文件(路径)的事实可能意味着该目录不为空.
谢谢
假设我想从多个来源(可能是旅行,技术或其他)汇总与特定利基相关的信息.我该怎么办?
有一个蜘蛛/爬虫将抓取网页以查找我需要的信息(我如何告诉抓取工具爬什么,因为我不想获得整个网络?)?然后有一个索引系统来索引和组织我抓取的信息,也是一个搜索引擎?
像Nutch lucene.apache.org/nutch这样的系统可以用于我想要的吗?你还推荐别的吗?
或者你能推荐另一种方法吗?
例如,Techmeme.com是如何构建的?(它是技术新闻的聚合器,它完全自动化 - 直到最近他们还增加了一些人为干预).建立这样的服务需要什么?
或者Kayak.com如何汇总他们的数据?(这是旅行聚合服务.)
我已经运行了3周的nutch爬行命令,现在当我尝试运行任何nutch命令时,我得到以下错误
Java HotSpot(TM)64位服务器VM警告:共享内存文件的空间不足:/ tmp/hsperfdata_user/27050尝试使用-Djava.io.tmpdir =选项选择备用临时位置.
错误:无法找到或加载主类___.tmp.hsperfdata_user.27055
我该如何解决这个问题?
Exception in thread "main" java.lang.IllegalArgumentException: Fetcher: No agents listed in 'http.agent.name' property.
at org.apache.nutch.fetcher.Fetcher.checkConfiguration(Fetcher.java:1166)
at org.apache.nutch.fetcher.Fetcher.fetch(Fetcher.java:1068)
at org.apache.nutch.crawl.Crawl.run(Crawl.java:135)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.nutch.crawl.Crawl.main(Crawl.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
Run Code Online (Sandbox Code Playgroud)
每次我跑./nutch crawl urls -dir crawl -depth 3 -topN 5.nutch决定抛出这个错误.我有我的nutch-site.xml和nutch-default.xml设置.
<property>
<name>http.agent.name</name>
<value>blah</value>
</property>
Run Code Online (Sandbox Code Playgroud)
进行了描述,使其更容易阅读.但我没有看到可以指定代理名称的其他位置.如果有人有任何建议我会很感激.
我试图遵循nutch教程,但有一些schema.xml文件的问题.
我被告知nutch为我的项目提供了架构,基本上就是这个......
cp ${NUTCH_RUNTIME_HOME}/conf/schema.xml ${APACHE_SOLR_HOME}/example/solr/conf/
Run Code Online (Sandbox Code Playgroud)
我已经在Tomcat中部署了我的solr文件,当我去Solr仪表板时我得到的错误是
collection1: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException:
Plugin init failure for [schema.xml] fieldType "text":
Plugin init failure for [schema.xml] analyzer/filter:
Error loading class 'solr.EnglishPorterFilterFactory'
Run Code Online (Sandbox Code Playgroud)
这与我的solrconfig.xml文件中的这个元素有关(我可以对此进行评论但不确定它有多重要)
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
Run Code Online (Sandbox Code Playgroud)
我编辑了我的solrconfig.xml,试图包含一系列与solr一起提供的jar文件
<lib path="/etc/solr/collection1/libs/dist/solr-core-4.2.1.jar" />
<lib path="/etc/solr/collection1/libs/dist/solr-analysis-extras-4.2.1.jar" />
Run Code Online (Sandbox Code Playgroud)
但我不认为它们包含缺少的类"solr.EnglishPorterFilterFactory"
有谁知道为什么这可能不起作用或我错过了什么?我不是一个Java开发人员,所以毫无疑问它会是简单的:)
更新 在发现架构中有一些旧类被引用之后我又在nutch/conf中看了一下,看起来好像有一个$ {NUTCH_RUNTIME_HOME} /conf/schema-solr4.xml文件似乎有效.
如果这是正确的,不是100%但是嘿......
我正在使用nutch 1.3来抓取一个网站.我想获取一个已抓取的网址列表,以及来自网页的网址.
我获取使用readdb命令爬网的URL列表.
bin/nutch readdb crawl/crawldb -dump file
Run Code Online (Sandbox Code Playgroud)
有没有办法通过阅读crawldb或linkdb找出页面上的网址?
在org.apache.nutch.parse.html.HtmlParser
我看到的outlinks数组中,我想知道是否有一种从命令行访问它的快捷方法.
我最近开始研究nutch,我正在努力了解它是如何工作的.据我所知,Nutch基本上用于抓取网络,solr/Lucene用于索引和搜索.但是当我阅读关于nutch的文档时,它说nutch也做了反向索引.它是否在内部使用Lucene进行索引,还是有其他一些用于索引的库?如果它使用solr/lucene进行索引,那么为什么有必要用nutch配置solr,正如nutch教程所说的那样?
索引是否默认完成.我的意思是我运行此命令来开始爬行.索引正在这里发生吗?
bin/nutch crawl urls -dir crawl -depth 3 -topN 5
Run Code Online (Sandbox Code Playgroud)
或者仅在这种情况下发生索引.(根据教程:如果您已经设置了Solr核心并希望为其编制索引,则需要将-solr参数添加到爬网命令中,例如)
bin/nutch crawl urls -solr http://localhost:8983/solr/ -depth 3 -topN 5
Run Code Online (Sandbox Code Playgroud) nutch ×10
lucene ×4
solr ×4
web-crawler ×4
java ×2
aggregation ×1
jvm ×1
linux ×1
manifoldcf ×1
saml ×1
web-services ×1