我正在使用simple html dom使用以下网址查找特定网页上的链接:
// Find all links
foreach($html->find('a') as $element)
echo $element->href . '<br>';
这可以找到页面上的所有链接,但是我希望能够找到找到的链接 同时在里面找到链接的链接,例如递归到第5级。
知道如何去做?
答案 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
}