MSDN is a huge hierarchical doc site.
更准确地说,内容是以分层方式组织的,但是url不是。URL空间是扁平的,使其看起来好像所有内容都在同一个目录中。(实际上,可能没有目录;我猜是从其他数据库中获取的;但这与这里无关。)
因此,如果你想下载MSDN的一部分,比如NMake manual,你不能只递归地下载给定目录下的所有内容。因为这将是MSDN的全部。对你的硬盘和乐队来说太多了。在
但是,您可以编写一个查看DOM(HTML)的脚本,然后只下载包含在文档某些导航部分中的链接,比如CSS class
属性{
你需要的是一些下载器,它可以让你说:
$webclient->add_links( $xpath_expression ); # or
$webclient->add_links( $css_selector );
使用Perl、LWP和XML::LibXML(HTML解析器)拼凑起来应该不太困难,但也许您知道有一种工具可以让您这样做,所以我不需要重新设计它。在
它不必是Perl,任何其他语言都可以,一个现成的程序也可以,它具有执行此任务所需的灵活性。在
从WWW::Mechanize查看find_link函数(和同级)。它可以使用任意标准来查找包含“id”和“class”属性的链接。在
Mojo::UserAgent返回理解CSS3选择器或XPath的内容。例如,我刚刚在Painless RSS processing with Mojo中展示了一个例子。我真的很喜欢这个新的(ish)web客户端的东西。大多数我想要的东西都已经在那里了(没有额外的模块),而且集成得很好。在
这可能会让你朝着正确的方向开始,或者让你误入歧途。请注意,我首先将页面保存到一个本地文件中,这样就不会在工作时不断地下载它。在
相关问题 更多 >
编程相关推荐