我尝试使用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
参数的各种值,并将maxDepth
中Option.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
答案 0 :(得分:3)
该问题与2018年有关,我们都使用https
进行安全浏览。
史前代码仅限于http
网址,但在2018年不适用于维基百科。
为了能够对此进行抓取,您必须在orignal源中执行一些修改。
更改URLChecker
以将https
视为有效。这可以通过以下代码片段来实现:
public static String wikiURL = "https://en.wikipedia.org"
修改课程Engine
。将第{108}行中的<http:
替换为<https:
以及第154行。注意,我们仅在此处解析https
作为开始标记,因为它们现在由维基百科发布。但是,关闭的wiki-tag必须仍然是</http>
- 只需通过搜索和替换即可不更改它。
修改option.txt
以包含https
种子网址。例如,我使用了这个文件:
totalPages=100
seedURL=https://en.wikipedia.org/wiki/Microsoft
再次执行make clean
和make all
并按照文档的建议重新运行。
我在本地测试它并开始抓取页面,正如您在附加的检索日志输出中看到的那样:
当前队列大小: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
相比,它真的很慢)。仅用于重建您的实验。 请勿在生产中使用此功能。