简单的HTML DOM,递归地查找链接

时间:2011-02-02 18:24:32

标签: php recursion simple-html-dom

我正在使用simple html dom使用以下网址查找特定网页上的链接:

// Find all links
foreach($html->find('a') as $element)
       echo $element->href . '<br>'; 

这可以找到页面上的所有链接,但是我希望能够找到找到的链接 同时在里面找到链接的链接,例如递归到第5级。

知道如何去做?

2 个答案:

答案 0 :(得分:3)

使用递归函数并跟踪深度:

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)

答案 1 :(得分:1)

过去我确实需要一个类似的功能。你可以做的是使用mysql来存储你的链接。

在我的情况下,我有一个 todo 表和一个 pages 表。 todo 表中包含一些你想要蜘蛛的网址。

我以前做的是获取我需要的页面信息(明文和标题)并将其存储在mysql db 页面中。然后我习惯循环链接并将它们添加到 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 
}