使用dom从div获取第一个href

时间:2015-12-06 09:35:04

标签: php dom curl

我需要从div中获取第一个href值...但它有两个,我只需要第一个...这里是以下的html和我的编码......

import os, sys
for p in sys.path:
    try:
        for fn in (os.listdir(p or '.')):
            if 'platform' in fn.lower():
                print os.path.join(p, fn)
    except OSError:
        print ':skipped', p

为此我使用以下代码......

 <div class="buttons">
                                    <!-- Clickout -->
                                    <a href="http://test.com"
                                    class="btn--ir--orange js-btn-click js-clickout-track js-clickout-sink js-ga-tracking

                                                gtm-clickout-11
                                        "
                                    rel="nofollow"
                                    target="_blank"
                                    >
                                        <i class="icon-check"></i>Bekijk product
                                    </a>
                                    <!-- Checkout -->
                                        <a class="btn--il--green margin-mobile-top-medium js-checkout-cart-add"
                                           href="#" data-group="Spiegelreflexcamera"

                                        </a>
                                </div>

这会返回第二个href值,这是#...任何人都可以帮我解决这个问题......无法弄清楚为什么它没有读取第一个href值......

1 个答案:

答案 0 :(得分:1)

在此代码中:

foreach($tr->getElementsByTagName('a') as $at)
{
    $urnt = "http://kieskeurig.nl".$at->getAttribute('href'); 
}

每次迭代$urnt变量都填充了$at的新值。

当然,您会在div中得到一个href的结果 - 因为只有一个href$urnt中的值未被覆盖遵循。

如果你想获得第一个收集元素:

最简单的方法是中断foreach循环:

foreach($tr->getElementsByTagName('a') as $at)
{
    $urnt = "http://kieskeurig.nl".$at->getAttribute('href'); 
    break;   // you break the loop right after the first iteration
}
echo $urnt ."<br />";

另一种选择是使用item方法,未经过测试,但它应该如下所示:

$urnt = $tr->getElementsByTagName('a')->item(0)->getAttribute('href');
echo "http://kieskeurig.nl" . $urnt;