私は現在、サイトをクロールしてサイトマップを作成するスクリプト(できればPHP)を作成する方法を見つけようとしています。従来の標準的なページのリストに加えて、どのページが他のページにリンクしているかをスクリプトで追跡したいと思います。
サンプルページ
A
B
C
D
次のような出力が欲しいのですが。
ページ名: A
ページAにリンクしているページ:
- B
- C
- D
ページ名: B
ページBにリンクしているページ:
- A
- C
等...
複数の標準サイトマップスクリプトに出くわしましたが、私が探しているものを実際に達成するものは何もありません。
編集 私は十分な情報を提供しなかったようです。そこに私の明確さの欠如について申し訳ありません。これが私が現在持っているコードです。simple_html_dom.phpを使用して、htmlの解析と検索のタスクを処理しました。
<?php
include("simple_html_dom.php");
url = 'page_url';
$html = new simple_html_dom();
$html->load_file($url);
$linkmap = array();
foreach($html->find('a') as $link):
if(contains("cms/education",$link)):
if(!in_array($link, $linkmap)):
$linkmap[$link->href] = array();
endif;
endif;
endforeach;
?>
注:私の小さなforeachループは、URLの特定のサブストリングに基づいてフィルタリングするだけです。
だから、私は必要な第1レベルのページを持っています。私が立ち往生しているのは、すでにアクセスしたページを追跡しながら、無期限に実行されないループを作成することです。