如何从整个网站提取所有网址,而不仅仅是从给定的链接

时间:2011-06-24 13:49:02

标签: php regex

我正在编写一个使用正则表达式从页面获取所有链接的PHP代码,我需要对其进行转换以获取整个网站的链接。 我想应该再次检查提取的URL,依此类推,以便脚本将访问它的所有URL,而不仅仅是给定页面。

我知道一切皆有可能,但这怎么样?感谢您的指导。

4 个答案:

答案 0 :(得分:2)

嗯,为了确保你获得谷歌找到的所有网页,那么抓取谷歌呢?只需搜索“site:domain.com”,然后检索遵循此模式的任何内容:
<h3 class="r"><a href="http://domain.com/.*?" class=l
(你也必须逃避正确的角色,'。*?'是RegEx,它会为你提供谷歌找到的所有网址。

无论如何,这只是对替代方法的建议。

答案 1 :(得分:1)

所以,你的正则表达式抓住了所有的链接。你循环通过这些链接的循环,用cURL抓取每个,通过正则表达式运行,洗涤,冲洗,重复。

可能要确保在其中放置某种URL深度计数器,以免最终解析Internet。

也可能要确保您不会重新检查您已经遵循的链接,以免最终在Infinite Recursion Street结束。

可能还想看看线程,以免需要10万年。

答案 2 :(得分:0)

这将从url()(css),href和src属性(链接,imgs,脚本)获取URL:

#(?:href|src)="([^"]+)|url\(["']?(.*?)["']?\)#i

他们将在第1组和第2组中被捕获。 请注意,某些网址可能是相对网址,因此您必须在调用它们之前将其设为绝对网址。

答案 3 :(得分:0)

通常,您无法访问允许您检索网站上所有页面的基础服务器。

因此,您只需要执行Google的操作:从该页面获取所有链接,然后扫描这些链接以获取其他链接。