:シンプルなHTML DOM、見つけるのリンクrecurssively
// Find all links
foreach($html->find('a') as $element)
echo $element->href . '<br>';
これは、ページ上のすべてのリンクを見つけるには、しかし、私が見つかりました。リンクに行くことができるようにしたいです また、の中には、などのリンクが再帰的に見つかっているものがあります。
どのようにすればいいですか?
:シンプルなHTML DOM、見つけるのリンクrecurssively
// Find all links
foreach($html->find('a') as $element)
echo $element->href . '<br>';
これは、ページ上のすべてのリンクを見つけるには、しかし、私が見つかりました。リンクに行くことができるようにしたいです また、の中には、などのリンクが再帰的に見つかっているものがあります。
どのようにすればいいですか?
は、再帰関数を使用して深さを追跡:
function findLinks($url, $depth, $maxDepth) {
// fetch $url and parse it
// ...
if ($depth <= $maxDepth)
foreach($html->find('a') as $element)
findLinks($element->href, $depth + 1, $maxDepth);
}
そして、あなたはfindLinks($rootUrl, 1, 5)
のようなものを呼び出すことによって開始します。
それでは、この論理も理解するのに苦労しています。 – RobertPitt
@Murilo:コメント行を読むのに気をつけますか? '$ url'を自分で取得する必要があります。ファイルをどこから取得しているのか分かりません。 – casablanca
これは再帰的なページではなく、1ページ内の再帰的な要素ではなく、1ページあり、すべてのリンクを取得したいと思っています。 – RobertPitt
私はこれまで同様の機能が必要でした。あなたができることは、mysqlを使ってリンクを保存することです。
私の場合、私はのtodoテーブルとページテーブルを持っていました。種をあなたののtodoいくつかのURLであなたはスパイダーにしたいテーブル。
私がしなければならなかったのは、必要なページ情報(平文とタイトル)を取得し、これをmysql db ページに保存することでした。その後、私はリンクをループして、todoテーブルに追加しました。最後のステップは、私のtodoリストから現在のページを削除してからループすることです。
grab a url from todo loop
{
get current page title and plaintext store it in pages table
loop through links Add found links to todo table
remove current page from todo
}
上記のリンク内のリンクを見つけると、どんな結果になるでしょうか? – RobertPitt
@Robert:ええ、リンク内で再帰的にリンクします。 – Sarfraz