如何使用PHP获取html页面中的link元素

时间:2011-08-20 07:06:21

标签: php html dom

首先,我知道我可以使用以下网址获取网页的HTML

file_get_contents($url);

我要做的是在页面中找到一个特定的链接元素(在头部找到)。

e.g:

<link type="text/plain" rel="service" href="/service.txt" /> (the element could close with just >)

我的问题是:我如何获得“rel”属性等于“service”的特定元素,以便获得href?

我的第二个问题是:我是否也应该获得“基础”元素?它适用于“link”元素吗?我试图遵循标准。

此外,html可能有错误。我无法控制用户如何编写代码。

3 个答案:

答案 0 :(得分:3)

使用PHP的DOMDocument,这应该做(未经测试):

$doc = new DOMDocument();
$doc->loadHTML($file);
$head = $doc->getElementsByTagName('head')->item(0);
$links = $head->getElementsByTagName("link");
foreach($links as $l) {
    if($l->getAttribute("rel") == "service") {
        echo $l->getAttribute("href");
    }
}

答案 1 :(得分:0)

你应该得到Base元素,但要知道它的工作原理和范围。

事实上,当我必须进行屏幕刮擦时,我使用的是phpquery。这是一个较旧的jQuery PHP端口...而这听起来像是一个愚蠢的概念,它对于文档遍历来说非常棒......并且不需要格式良好的XHTMl。

http://code.google.com/p/phpquery/

答案 2 :(得分:0)

我正在使用Java下的Selenium进行Web应用程序测试。它为使用CSS-Selectors的文档遍历提供了非常好的功能。

查看How to use Selenium with PHP 但是,如果您只想提取此链接,则此设置可能会使您的需求变得复杂。