如何构建一个正则表达式来分析网页上的所有链接?

时间:2010-11-12 18:06:18

标签: php regex

我正在使用PHP构建一个Web爬虫,用于Intranet使用(我们正在处理一个巨大的Intranet)。我设法使用cURL函数下载网页,但现在我想扫描内容以获取链接。我试图找到所有明显的链接,并将它们拆分为相应的方案/权限/路径/查询/片段,以便我可以正确索引它们。

是否存在与所有链接匹配的已知正则表达式,包括<img src="../images/header/logo.png" />background-image: url(..)<a href="?query#lonely-fragment">等链接。

我在PHP中使用正则表达式可以找到的所有纯文本链接表示是什么?

1 个答案:

答案 0 :(得分:3)

使用适当的HTML解析器解析文档会更好。正则表达式并不适合这种事情。

完成后,使用XPath扫描例如,这是非常简单的//img/@src//a/@href查找文档中的所有内容链接。

如果要扫描CSS,还需要查找//style[@type='text/css']//link[@rel='stylesheet'][@type='text/css']/@href,然后使用正确的CSS解析器来提取所有内容。 (或者,如果你想要懒惰,你可以可能逃脱正则表达式/url\((.*?)\)/。)