【问题标题】:Is it possible to crawl directly through a site tree a site tree remotely or locally?是否可以通过站点树直接爬网远程或本地站点树?
【发布时间】:2023-04-02 05:09:01
【问题描述】:

我是 web 开发的 n00b 并且我有一个 n00b 的问题。

假设有一个网站,例如,类似

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
     .
     .
     .
*/

不依赖任何过度的蛮力?

【问题讨论】:

  • 你必须解释初始页面的内容,在那里找到 URL,然后重复这些页面等等。
  • 如果页面是链接的,那么这很容易。如果它们没有关联,则需要大量猜测。
  • @Pointy 我知道这是一种方法,但除了猜测数万亿个可能的子页面名称的蛮力之外,这是唯一的方法吗?
  • 您认为执行此类操作的信息可能来自哪里?您熟悉的网站是否发布了可用 URL 的完整地图?
  • 您可以从服务器获取目录列表并将其提供给 JS,以便它知道在哪里查找。

标签: javascript algorithm url tree web-crawler


【解决方案1】:

理论

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

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

示例

假设我们想要获取要抓取的链接http://www.msn.com/
我们可以转到通常的机器人文件位置,即:http://www.msn.com/robots.txt,在那里我们可以找到该行:
Sitemap: 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>

免责声明

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多