我是网络开发的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
.
.
.
*/
不依赖任何过度的蛮力?
答案 0 :(得分: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>
并非所有网站都会向您提供此功能,并且无法保证会有哪些链接或它将是完整列表。这是为了弄清楚它是否对你的目的有用。