【问题标题】:Solr post.jar crashes with "content is not allowed in prolog"Solr post.jar 因“prolog 中不允许内容”而崩溃
【发布时间】:2018-11-06 00:27:18
【问题描述】:

我正在尝试评估 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/ 中的所有链接(指向文件和其他页面),所以我认为没有任何文件或链接带有特殊字符。谢谢大家,感谢您的帮助。

【问题讨论】:

  • 如果有人可以推荐另一个爬虫与 Solr 一起使用(并且在 Windows 中易于配置),那也很好。
  • 看看 Apache Nutch。它专为爬取而设计,可以将数据推送到 Solr。
  • 嗨@AlexandreRafalovitch,我确实尝试按照他们的教程wiki.apache.org/nutch/NutchTutorial 配置Nutch,但没有成功;遵循了几个故障排除步骤,包括添加 hadoop 库、添加环境变量,但也无法使其正常工作。你知道在 Windows 中设置它的好教程吗?谢谢。
  • 如果您对 Nutch 有疑问,不妨试试 Apache NiFi:nifi.apache.org/docs/nifi-docs/html/…
  • 感谢@AlexandreRafalovitch 的回答。我无法让 post.jar 工具正常工作。在尝试并排除 Nutch 1.8 故障后,我终于能够让它抓取网页并自动跟踪链接。这就是我所做的:安装 cygwin,安装/提取 Nutch 到 cygwin/home 文件夹,下载 Hadoop-0.20.20-core.jar 并粘贴到 cygwin/home/apache-nutch-1.8/lib。完成此操作后,我可以在这里完成 Nutch 教程:wiki.apache.org/nutch/NutchTutorial

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


【解决方案1】:

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

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

【讨论】:

  • 去掉递归选项会不会导致登录页面被索引?我遇到了同样的问题,能够单独获取每个链接,但是为整个站点执行它太累了,冗长的过程以及重复和丢失链接的机会总是存在的。
【解决方案2】:

我无法让 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 一路上还有其他一些小问题,但我真的不记得那些是什么(我需要编写更好的文档......),无论如何,如果有人在与我类似的环境中尝试这个,请随时给我发消息。

【讨论】:

    【解决方案3】:

    使用 Drupal,我用一个 6 行的 shell 脚本解决了这个问题,不需要 nutch 等,以及由此带来的研发、环境问题等:

    #!/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 脚本足够慢,我什至不需要延迟。

    【讨论】:

      猜你喜欢
      • 2011-06-01
      • 2011-07-23
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 2015-12-15
      • 2011-04-09
      • 1970-01-01
      • 2020-01-16
      相关资源
      最近更新 更多