Solr post.jar崩溃与#34;内容不允许在prolog"

时间:2018-05-27 04:11:28

标签: post solr xml-parsing web-crawler sax

我试图评估Solr,但无法使用递归选项开始抓取网站。已经搜遍了所有的答案,但没有运气。 环境:Windows Server 2012 r2,java版本" 1.8.0_171",solr-7.3.0。

运行post.jar工具时出现以下错误:

java -Dauto=yes -Dc=testcore -Ddata=web -Drecursive=2 -Ddelay=10 -jar post.jar http://localhost/

SimplePostTool version 5.0.0
Posting web pages to Solr url http://localhost:8983/solr/testcore/update/extract
Entering auto mode. Indexing pages with content-types corresponding to file endings xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
Entering recursive mode, depth=2, delay=10s
Entering crawl at level 0 (1 links total, 1 new)
POSTed web resource http://localhost/ (depth: 0)
[Fatal Error] :1:1: Content is not allowed in prolog.
Exception in thread "main" java.lang.RuntimeException: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
        at org.apache.solr.util.SimplePostTool$PageFetcher.getLinksFromWebPage(SimplePostTool.java:1252)
        at org.apache.solr.util.SimplePostTool.webCrawl(SimplePostTool.java:616)
        at org.apache.solr.util.SimplePostTool.postWebPages(SimplePostTool.java:563)
        at org.apache.solr.util.SimplePostTool.doWebMode(SimplePostTool.java:365)
        at org.apache.solr.util.SimplePostTool.execute(SimplePostTool.java:187)
        at org.apache.solr.util.SimplePostTool.main(SimplePostTool.java:172)
Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
        at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
        at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
        at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
        at org.apache.solr.util.SimplePostTool.makeDom(SimplePostTool.java:1061)
        at org.apache.solr.util.SimplePostTool$PageFetcher.getLinksFromWebPage(SimplePostTool.java:1232)
        ... 5 more

我可以手动为http://localhost/中的所有链接(到文件和其他页面)编制索引,如果我一个接一个地关闭递归选项,那么我不认为有任何文件或链接特殊字符。谢谢大家,感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

删除-Drecursive = 2,创建问题时使用以下命令。

java -Dauto = yes -Dc = testcore -Ddata = web -Ddelay = 10 -jar post.jar http://localhost/

答案 1 :(得分:0)

我无法使post.jar工具正常工作。在尝试并对Nutch 1.8进行故障排除后,我终于能够抓取网页并自动关注链接。 这就是我做的:安装cygwin,安装/解压缩Nutch到cygwin / home文件夹,下载Hadoop-0.20.20-core.jar并粘贴到cygwin / home / apache-nutch-1.8 / lib。 完成后,我可以在这里完成Nutch教程:https://wiki.apache.org/nutch/NutchTutorial 沿途还有其他一些轻微的打嗝,但我真的不记得那些是什么(我需要处理更好的文档...),无论如何,如果有人在类似的环境中尝试这个,我可以随意给我发消息。

答案 2 :(得分:0)

借助Drupal,我使用了6行shell脚本解决了这一问题,而无需进行胡闹等等,而这涉及到R&D,环境问题等:

#!/bin/bash
x=0
while [ "$x" != "37142" ]
do
        /opt/solr/bin/post -c drupal_dev  https://www.[yoursite].com/node/$x
        let "x+=1"
done

您可以使用drush动态生成最高节点数。

您可以轻松地对此进行调整,以使用通过使用wget爬网您的网站而生成的URL列表,或者在wget爬网您的网站时将其发布。如果从市场上获得有关使用/ node / [nodeId] url的反馈,我打算这样做。

这个特殊的shell脚本足够慢,我什至不需要拖延。