维基百科爬行的 JWikiDocs 问题
Issue with JWikiDocs for Wikipedia Crawling
我正在尝试将 JWikiDocs 用作将维基百科页面下载为文本文档的重点抓取工具。我在 VirtualBox 运行 Ubuntu 17.10.1.
中执行它
我已经使用
清理并编译了 JWikiDocs
$ make clean
和
$ make all
然后根据 README
文件,我在 options.txt 文件中指定种子 URL 和要下载的最大文档数。例如:
totalPages=100
seedURL=http://en.wikipedia.org/wiki/Microsoft
此文件包含在 JWikiDocs/data/Microsoft
目录中。
然后我从 Ubuntu 终端使用以下命令执行 JWikiDocs:
$ java -classpath lib/htmlparser/htmlparser.jar:lib/jwikidocs.jar jwikidocs.JWikiDocs -d data/Microsoft
我遇到的问题是 只有种子页面被下载 作为文档。尽管我已经指定了 100 个文档进行抓取,但它似乎并没有抓取种子页面中包含的 URL,而是在最后终止。
我尝试了 totalPages
参数的各种值,并在 Option.java
内更改了 maxDepth
的默认值 4
。我还尝试将睡眠时间从 500
更改为 2000
ms.
我还注意到在执行 $ make test
时,测试目录结果做同样的事情;实际上只更新了第一个文档。测试目录在各自的文件夹中确实包含 100 个输出文档,但这些文档与可下载的 tar
文件打包在一起,并且在测试期间不会更新。我尝试删除它们并再次 运行 $ make test
,但它们没有被复制。
有谁知道如何解决这个问题,以便 JWikiDocs 在指定的种子页面中抓取 URLs?我已经联系了发布者,但我认为这样可以更快地提供帮助。
编辑:
我已经包含了检索日志,以便所有抓取选项都可见。如您所见,它处理种子 URL 然后终止。我怀疑问题出在潜在的 Java 某处。
RetrievalLog.txt
Root directory: ../data/Microsoft
Log file: ../data/Microsoft/retrievallog.txt
Data directory: ../data/Microsoft/data
Retrieval max depth: 4
Total number of retrieved pages: 100
Time sleep between transactions: 500 milliseconds
Time sleep after an error transaction: 5000 milliseconds
seedURL=http://en.wikipedia.org/wiki/Microsoft
Output encoding: UTF-8
Text including hyperlinks: true
Current queue size: 0
Downloading and processing URL: http://en.wikipedia.org/wiki/Microsoft ...
Downloading and processing completed! Save docID: 1
此问题与我们都使用 https
安全浏览的 2018 年有关。
史前代码仅限于 http
网址,这在 2018 年不适用于维基百科。
为了能够抓取它,您必须对原始源进行一些修改。
更改 URLChecker
以将 https
视为有效。这可以通过以下代码片段实现:
public static String wikiURL = "https://en.wikipedia.org"
修改classEngine
。将第 108 行中的 <http:
替换为 <https:
以及第 154 行中的内容。请注意,我们仅将 https
解析为此处的开始标记,因为它们现在由维基百科发布。但是,结束的 wiki 标签必须仍然是 </http>
- 不要 只需通过搜索和替换来更改它。
修改 option.txt
以包含 https
-种子 URL。例如,我使用了这个文件:
totalPages=100
seedURL=https://en.wikipedia.org/wiki/Microsoft
再次执行 make clean
和 make all
并按照文档中的建议重新运行。
我在本地对其进行了测试,它开始抓取页面,正如您在随附的检索日志输出中所见:
Current queue size: 0 Downloading and processing URL:
https://en.wikipedia.org/wiki/microsoft ... Downloading and processing
completed! Save docID: 1
Current queue size: 859 Downloading and processing URL:
https://en.wikipedia.org/wiki/microsoft_redmond_campus ... Downloading
and processing completed! Save docID: 2
Current queue size: 858 Downloading and processing URL:
https://en.wikipedia.org/wiki/redmond,_washington ... Downloading and
processing completed! Save docID: 3
Current queue size: 857 Downloading and processing URL:
https://en.wikipedia.org/wiki/list_of_business_entities ...
Downloading and processing completed! Save docID: 4
Current queue size: 1360 Downloading and processing URL:
https://en.wikipedia.org/wiki/public_company ... Downloading and
processing completed! Save docID: 5
上述解决方案的步骤可行,但需要您在当地进行干预。
我对原作者提供的代码库的个人评论:
它在代码质量、代码风格和性能方面需要如此多的现代化(与多线程相比,它确实很慢 crawler4j
)。仅将其用于重建您的实验。 不要在生产中使用它。
我正在尝试将 JWikiDocs 用作将维基百科页面下载为文本文档的重点抓取工具。我在 VirtualBox 运行 Ubuntu 17.10.1.
中执行它我已经使用
清理并编译了 JWikiDocs$ make clean
和
$ make all
然后根据 README
文件,我在 options.txt 文件中指定种子 URL 和要下载的最大文档数。例如:
totalPages=100
seedURL=http://en.wikipedia.org/wiki/Microsoft
此文件包含在 JWikiDocs/data/Microsoft
目录中。
然后我从 Ubuntu 终端使用以下命令执行 JWikiDocs:
$ java -classpath lib/htmlparser/htmlparser.jar:lib/jwikidocs.jar jwikidocs.JWikiDocs -d data/Microsoft
我遇到的问题是 只有种子页面被下载 作为文档。尽管我已经指定了 100 个文档进行抓取,但它似乎并没有抓取种子页面中包含的 URL,而是在最后终止。
我尝试了 totalPages
参数的各种值,并在 Option.java
内更改了 maxDepth
的默认值 4
。我还尝试将睡眠时间从 500
更改为 2000
ms.
我还注意到在执行 $ make test
时,测试目录结果做同样的事情;实际上只更新了第一个文档。测试目录在各自的文件夹中确实包含 100 个输出文档,但这些文档与可下载的 tar
文件打包在一起,并且在测试期间不会更新。我尝试删除它们并再次 运行 $ make test
,但它们没有被复制。
有谁知道如何解决这个问题,以便 JWikiDocs 在指定的种子页面中抓取 URLs?我已经联系了发布者,但我认为这样可以更快地提供帮助。
编辑:
我已经包含了检索日志,以便所有抓取选项都可见。如您所见,它处理种子 URL 然后终止。我怀疑问题出在潜在的 Java 某处。
RetrievalLog.txt
Root directory: ../data/Microsoft
Log file: ../data/Microsoft/retrievallog.txt
Data directory: ../data/Microsoft/data
Retrieval max depth: 4
Total number of retrieved pages: 100
Time sleep between transactions: 500 milliseconds
Time sleep after an error transaction: 5000 milliseconds
seedURL=http://en.wikipedia.org/wiki/Microsoft
Output encoding: UTF-8
Text including hyperlinks: true
Current queue size: 0
Downloading and processing URL: http://en.wikipedia.org/wiki/Microsoft ...
Downloading and processing completed! Save docID: 1
此问题与我们都使用 https
安全浏览的 2018 年有关。
史前代码仅限于 http
网址,这在 2018 年不适用于维基百科。
为了能够抓取它,您必须对原始源进行一些修改。
更改
URLChecker
以将https
视为有效。这可以通过以下代码片段实现:public static String wikiURL = "https://en.wikipedia.org"
修改class
Engine
。将第 108 行中的<http:
替换为<https:
以及第 154 行中的内容。请注意,我们仅将https
解析为此处的开始标记,因为它们现在由维基百科发布。但是,结束的 wiki 标签必须仍然是</http>
- 不要 只需通过搜索和替换来更改它。修改
option.txt
以包含https
-种子 URL。例如,我使用了这个文件:totalPages=100 seedURL=https://en.wikipedia.org/wiki/Microsoft
再次执行
make clean
和make all
并按照文档中的建议重新运行。
我在本地对其进行了测试,它开始抓取页面,正如您在随附的检索日志输出中所见:
Current queue size: 0 Downloading and processing URL: https://en.wikipedia.org/wiki/microsoft ... Downloading and processing completed! Save docID: 1
Current queue size: 859 Downloading and processing URL: https://en.wikipedia.org/wiki/microsoft_redmond_campus ... Downloading and processing completed! Save docID: 2
Current queue size: 858 Downloading and processing URL: https://en.wikipedia.org/wiki/redmond,_washington ... Downloading and processing completed! Save docID: 3
Current queue size: 857 Downloading and processing URL: https://en.wikipedia.org/wiki/list_of_business_entities ... Downloading and processing completed! Save docID: 4
Current queue size: 1360 Downloading and processing URL: https://en.wikipedia.org/wiki/public_company ... Downloading and processing completed! Save docID: 5
上述解决方案的步骤可行,但需要您在当地进行干预。
我对原作者提供的代码库的个人评论:
它在代码质量、代码风格和性能方面需要如此多的现代化(与多线程相比,它确实很慢 crawler4j
)。仅将其用于重建您的实验。 不要在生产中使用它。