【问题标题】:Count Hyperlinks of a Website [duplicate]计算网站的超链接 [重复]
【发布时间】:2011-11-27 18:59:13
【问题描述】:

可能重复:
How to parse HTML with PHP?

我想写一个php程序来统计一个网站的所有超链接,用户可以输入。

如何做到这一点?是否有一个库或我可以解析和分析超链接的 html 的东西?

感谢您的帮助

【问题讨论】:

标签: php html hyperlink


【解决方案1】:

这样

<?php
$site  = file_get_contents("someurl");
$links = substr_count($site, "<a href=");
print"There is {$links} in that page.";
?>

【讨论】:

  • 这是一种简单的方法,我认为你可以通过一些替代方法做得更好。
  • 简单,但足以满足我的需要。谢谢。另外,我的问题中的 cmets 中提到的东西是更强大的解决方案,如果这还不够,我将使用它
【解决方案2】:

嗯,我们不能给你一个有限的答案,只能给你一些建议。我用php做过一次搜索引擎所以原理是一样的:

  1. 首先,您需要将脚本编码为控制台脚本,Web 脚本并不合适,但这完全是个人喜好问题
  2. 您需要了解如何在 PHP 中使用套接字并发出请求,请查看 php 套接字库:http://www.php.net/manual/ref.network.php
  3. 您需要熟悉 HTTP 请求的世界,了解如何创建自己的 GET/POST 请求以及从返回的内容中拆分标头。
  4. 最后一部分使用正则表达式很容易,只需 preg_match "#()*#i" 的内容(最后一个表达式可能是错误的,我根本没有测试它好吗?)
  5. 循环找到的 href 列表,与已经访问过的 href 进行比较(记住在您的内容中考虑通配符 GET 参数),然后重复该过程以加载网站的所有页面。

这是一项艰巨的工作......祝你好运

【讨论】:

  • 请注意,我刚刚看到了 file_get_contents,实际上您可以用 $context 将 SOCKET 部分替换为 file_get_contents,这将使您的生活在许多方面更轻松。我是老派,所以我倾向于使用老派的方式:)
【解决方案3】:

您可能必须使用 CURL 来获取网页内容。将其存储在一个变量中,然后将其解析为超链接。您可能需要正则表达式。

【讨论】:

    猜你喜欢
    • 2016-02-12
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 2021-03-10
    • 1970-01-01
    • 2020-06-30
    相关资源
    最近更新 更多