简单的 HTML DOM,递归查找链接
我正在使用 simple html dom 来查找某个页面上的链接:
// Find all links
foreach($html->find('a') as $element)
echo $element->href . '<br>';
这将查找页面上的所有链接,不过我希望能够找到找到的链接 以及递归地在这些找到的链接内部查找链接,例如到级别 5。
知道如何进行吗?
I am using simple html dom to find links on a certain page using:
// Find all links
foreach($html->find('a') as $element)
echo $element->href . '<br>';
This find all the links on the page, however i want to be able to go to found links
as well and find links inside those found links recursively for example to level 5.
Any idea of how to go about?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用递归函数并跟踪深度:
您将首先调用
findLinks($rootUrl, 1, 5)
之类的函数。Use a recursive function and keep track of the depth:
And you would start by calling something like
findLinks($rootUrl, 1, 5)
.过去我确实需要类似的功能。你可以做的就是使用 mysql 来存储你的链接。
就我而言,我有一个 todo 表和一个 pages 表。在您的 todo 表中添加您想要抓取的一些 url。
我过去所做的就是获取我需要的页面信息(纯文本和标题)并将其存储在 mysql 数据库 pages 中。然后我经常循环访问链接并将它们添加到 todo 表中。最后一步是从我的待办事项列表中删除当前页面,然后循环......
In the past I did need a similar feature. What you can do is use mysql to store your links.
In my case I had a todo table and a pages table. Seed your todo table with some url's you want to spider.
What I used to do was to get the page info I need (plaintext and title) and store this in a mysql db pages. Then I used to loop through the links and add them to the todo table. The last step was to remove the current page from my todo list then loop over..