更准确地说,内容是以分层方式组织的,但 URL 不是。URL 空间是扁平的,看起来就像所有东西都在同一个目录中。(实际上,可能没有目录;我猜事情是从其他数据库中出来的;但这与这里无关。)
因此,如果您想下载 MSDN 的一部分,例如NMake 手册,您不能只递归地下载给定目录下的所有内容。因为那将是 MSDN 的全部内容。对您的硬盘驱动器和带宽来说太多了。
但是您可以编写一个查看 DOM (HTML) 的脚本,然后只跟踪和下载文档某些导航部分中包含的链接,例如 CSSclass
属性toc_children
和的链接toc_siblings
,而不是toc_parent
.
你需要的是一些下载器,它可以让你说:
$webclient->add_links( $xpath_expression ); # or
$webclient->add_links( $css_selector );
使用 Perl、LWP 和 XML::LibXML(HTML 解析器)拼凑一些东西应该不会太难,但也许你知道一个工具可以让你做到这一点,所以我不需要重新发明它。
它不必是 Perl,任何其他语言也可以,并且具有这项工作所需的灵活性的现成程序也是如此。