JWikiDocs对维基百科爬行的问题

时间:2018-01-16 10:48:16

标签: java web-crawler wikipedia

我尝试使用JWikiDocs作为焦点抓取工具,将维基百科页面下载为文本文档。我在运行Ubuntu 17.10.1的VirtualBox中执行它。

我已经使用

清理和编译了JWikiDocs
$ make clean

$ make all 

然后根据README文件,我在options.txt文件中指定种子URL和要下载的最大文档数。例如:

totalPages=100
seedURL=http://en.wikipedia.org/wiki/Microsoft

此文件包含在JWikiDocs/data/Microsoft目录中。

然后我使用Ubuntu Terminal中的以下命令执行JWikiDocs:

$ java -classpath lib/htmlparser/htmlparser.jar:lib/jwikidocs.jar jwikidocs.JWikiDocs -d data/Microsoft

我遇到的问题是仅将种子页面作为文档下载。即使我已经指定了100个用于抓取的文档,但似乎它不会抓取种子页面中包含的URL并且最终会终止。

我尝试了totalPages参数的各种值,并将maxDepthOption.java的值从默认值4更改为500。我也尝试将睡眠时间从2000更改为$ make test毫秒。

我还注意到在执行tar时,测试目录结果会做同样的事情;只有第一个文件才真正更新。测试目录在其各自的文件夹中包含100个输出文档,但这些文档与可下载的$ make test文件一起打包,并且在测试期间不会更新。我尝试删除它们并再次运行{{1}},但它们未被复制。

有没有人知道如何解决这个问题,以便JWikiDocs抓取指定种子页面中的URL?我已联系过出版商,但我认为可能会更快帮助。

修改

我已经包含了检索日志,因此所有抓取选项都可见。如您所见,它处理种子URL然后终止。我怀疑这个问题存在于底层的Java中。

RetrievalLog.txt

  

根目录:../ data / Microsoft

     

日志文件:../ data / Microsoft / retrievevallog.txt

     

数据目录:../ data / Microsoft / data

     

检索最大深度:4

     

检索页面总数:100

     

交易之间的时间休眠:500毫秒

     

错误事务后的时间睡眠:5000毫秒

     

seedURL = http://en.wikipedia.org/wiki/Microsoft

     

输出编码:UTF-8

     

包含超链接的文字:true

     

当前队列大小:0

     

下载并处理网址:http://en.wikipedia.org/wiki/Microsoft ...

     

下载和处理完成!保存docID:1

1 个答案:

答案 0 :(得分:3)

该问题与2018年有关,我们都使用https进行安全浏览。

史前代码仅限于http网址,但在2018年不适用于维基百科。

为了能够对此进行抓取,您必须在orignal源中执行一些修改。

  1. 更改URLChecker以将https视为有效。这可以通过以下代码片段来实现:

    public static String wikiURL = "https://en.wikipedia.org"
    
  2. 修改课程Engine。将第{108}行中的<http:替换为<https:以及第154行。注意,我们仅在此处解析https作为开始标记,因为它们现在由维基百科发布。但是,关闭的wiki-tag必须仍然是</http> - 只需通过搜索和替换即可更改它。

  3. 修改option.txt以包含https种子网址。例如,我使用了这个文件:

    totalPages=100
    seedURL=https://en.wikipedia.org/wiki/Microsoft
    
  4. 再次执行make cleanmake all并按照文档的建议重新运行。

  5. 我在本地测试它并开始抓取页面,正如您在附加的检索日志输出中看到的那样:

      

    当前队列大小:0下载和处理URL:   https://en.wikipedia.org/wiki/microsoft ...正在下载和处理   完成!保存docID:1

         

    当前队列大小:859正在下载和处理网址:   https://en.wikipedia.org/wiki/microsoft_redmond_campus ...正在下载   并且处理完成了!保存docID:2

         

    当前队列大小:858正在下载和处理URL:   https://en.wikipedia.org/wiki/redmond,_washington ...下载和   处理完毕!保存docID:3

         

    当前队列大小:857下载和处理URL:   https://en.wikipedia.org/wiki/list_of_business_entities ......   下载和处理完成!保存docID:4

         

    当前队列大小:1360正在下载和处理网址:   https://en.wikipedia.org/wiki/public_company ...下载和   处理完毕!保存docID:5

    上述解决方案的步骤有效,但需要您当地的干预。

    我对原作者提供的代码库的个人评论:

    在代码质量,代码风格和性能方面需要很多现代化(与多线程crawler4j相比,它真的很慢)。仅用于重建您的实验。 请勿在生产中使用此功能。