我整天都在乱用DOM XPath的东西 - 四处阅读并撕掉我的头发!所以,不得已,请问你们 - 专业人士!
我要做的是检索all the titles of threads here中的(在数组中)。
我正在尝试使用XPath(除非有人能告诉我更好的方法);目前我只想获得一个标题来检查我的代码是否正常工作(显然不是!...)
我正在使用:
$list3 = $xpath3
->evaluate("//a[contains(@style, 'font-weight:bold') and
contains(@href, 'showthread.php?t=3499047')]");
然而,没有任何东西被检索
答案 0 :(得分:2)
您没有得到任何结果的原因是没有<a>
元素满足这两个条件。
这些是@href中包含“3499047”的链接:
<a href="showthread.php?s=9bc55ab5990282a5353fb20d505d577e&t=3499047" id="thread_title_3499047">Tesco misprices and discussion (Thread 12)</a>
<a href="showthread.php?s=9bc55ab5990282a5353fb20d505d577e&t=3499047">1</a>
<a href="showthread.php?s=9bc55ab5990282a5353fb20d505d577e&t=3499047&page=2">2</a>
<a href="showthread.php?s=9bc55ab5990282a5353fb20d505d577e&t=3499047&page=3">3</a>
<a href="showthread.php?s=9bc55ab5990282a5353fb20d505d577e&t=3499047&page=110">Last Page</a>
<a href="member.php?s=9bc55ab5990282a5353fb20d505d577e&find=lastposter&t=3499047" rel="nofollow">ExiledCockney</a>
<a href="misc.php?do=whoposted&t=3499047" onclick="who(3499047); return false;">2,184</a>
<a rel="shadowbox;width=732;height=527;player=iframe;" href="wow.php?t=3499047" target="_blank" style="display: block; width: 100%; height: 100%; cursor: pointer;">
<div style="width: 100%; height: 100%; background-image: url('http://images2.moneysavingexpert.com/images/forum_style_2/misc//wow_big_faint_grey.gif');">
<div style="padding: 12px 0px 0px 0px;">
<strong>3</strong>
</div>
</div>
</a>
如您所见,它们都没有在样式属性中包含“'font-weight:bold'”。
如果页面上的标记在浏览器中查看时具有所需组合的元素,则可能是通过javascript添加的。 DOM不会运行任何JavaScript,因此您必须检查使用DOM获取的标记。
答案 1 :(得分:0)
确保DOM不会在html上进行barfing。关于格式错误的HTML,它非常挑剔。查看加载页面后->saveHTML()
调用立即生成的内容。如果你得到不同/截断的东西,你的输入就会格格不入,必须先清理干净。
答案 2 :(得分:0)
我看了那个html,但是我没有看到任何与href有任何联系的style="font-weight: bold;"
。我实际上没有在页面上看到任何粗体链接。无论如何,当我删除这个条件时,我会从evaluate()
获得五个DOME元素。