javascript - 是否可以通过站点树远程或本地直接爬取站点树?

标签 javascript algorithm url tree web-crawler

我是网络开发新手,我有一个新手问题。

假设有一个网站,例如,

index.php
    page1.php
    page2.php
      page2-1.php
      page2-2.php
    page3.php 

有没有一种方法可以在不知道子页面名称的情况下直接转到从索引开始的每个子页面?具体来说,是否有可能在 Javascript 中构造一个像

这样工作的 function
console.log(printSiteTree("StackOverflow.com");
/* Prints: 

   stackoverflow.com
     stackoverflow.com/questions
            .
            .
            .
            stackoverflow.com/questions/29633992
            .
            .
            .
                stackoverflow.com/questions/29633992/is-there-any-tool-to-calculate-the-distance-between-a-program-point-and-a-execut
            .
            .
            .
     stackoverflow.com/tags
     .
     .
     .
*/

不依赖任何不正当的蛮力?

最佳答案

理论

如果站点想让您拥有这些链接,您可以获得站点上的链接列表。 这是通过站点地图完成的:http://en.wikipedia.org/wiki/Site_map

通常,站点会在其 robots.txt 文件中提供站点地图的位置,以便抓取工具可以访问它。 它很可能是一个 URL 嵌套在 sitemap/loc 下的 XML 文件。

例子

假设我们想要获取要抓取的链接 http://www.msn.com/ .
我们可以转到通常的机器人文件位置,即:http://www.msn.com/robots.txt在那里我们可以找到这一行:
站点地图:http://sitemap.msn.com/xml
所以我们访问 URL 并得到我们的 URL 列表:

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>http://sitemap.msn.com/xml/en-nz-autos-0</loc>
</sitemap>
<sitemap>
<loc>http://sitemap.msn.com/xml/en-nz-entertainment-0</loc>
</sitemap>
<sitemap>
<loc>http://sitemap.msn.com/xml/en-nz-entertainment-1</loc>
</sitemap>
<sitemap>
<loc>http://sitemap.msn.com/xml/en-nz-finance-0</loc>
</sitemap>

免责声明

并非所有站点都会为您提供此信息,并且无法保证会提供哪些链接或完整列表。由您决定它是否对您的目的有用。

关于javascript - 是否可以通过站点树远程或本地直接爬取站点树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29634157/

相关文章:

algorithm - 如何快速搜索书名?

r - 当应用程序加载时,根据数据包含 "&"字符的 URL 预填充 Shiny 输入

javascript - 如果满足条件,则在另一个转换期间添加并发转换

javascript - 使用 html 从变量中删除样式标签

算法分析题

java - 在 LeetCode 质数挑战赛中找不到我的程序的修复程序

javascript - ajax 在前面完成后执行函数

JavaScript + jQuery : Display calculated variable in table instead of console. 日志

.htaccess 创建搜索引擎友好的 URL

ios - 内容拦截器 - Swift | iOS