1

我正在使用简单的 html dom来查找特定页面上的链接:

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

这会找到页面上的所有链接,但是我也希望能够找到找到的链接,并递归地这些找到的链接中找到链接,例如到第 5 级。

知道该怎么做吗?

4

2 回答 2

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)

于 2011-02-02T18:28:58.280 回答
1

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

就我而言,我有一个todo表和一个pages表。在你的待办事项表中添加一些你想要抓取的 url。

我以前做的是获取我需要的页面信息(明文和标题)并将其存储在 mysql db pages中。然后我曾经循环遍历链接并将它们添加到待办事项表中。最后一步是从我的待办事项列表中删除当前页面然后循环..

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 
}
于 2013-03-19T23:08:17.897 回答