【发布时间】:2014-10-21 13:36:08
【问题描述】:
好吧,我对 DOM 有点陌生,但到目前为止,我已经设法拼凑出一个半可行的解决方案。
使用 xpath,我在网页中寻找关键元素并循环遍历每个实例,这很好,直到我到达一个空节点。
所以在构建我的数组时,我说一个元素有 20 个节点,但另一个元素只有 14 个,因为 img 并非一直存在。
所以实际上我有一个看起来像这样的数组
Array
(
[0] => Array
(
[item] => PV10923
[img] => image1.jpg
)
[1] => Array
(
[item] => PV10924
[img] => image2.jpg
)
[2] => Array
(
[item] => PV10925
[img] => image3.jpg
)
[3] => Array
(
[item] => PV10926
[img] => image4.jpg
)
[4] => Array
(
[item] => PV10927
[img] =>
)
[5] => Array
(
[item] => PV10928
[img] =>
)
[6] => Array
(
[item] => PV10929
[img] =>
)
)
实际上应该是这样的
Array
(
[0] => Array
(
[item] => PV10923
[img] => image1.jpg
)
[1] => Array
(
[item] => PV10924
[img] => image2.jpg
)
[2] => Array
(
[item] => PV10925
[img] =>
)
[3] => Array
(
[item] => PV10926
[img] =>
)
[4] => Array
(
[item] => PV10927
[img] =>
)
[5] => Array
(
[item] => PV10928
[img] => image3.jpg
)
[6] => Array
(
[item] => PV10929
[img] => Image4.jpg
)
)
现在网页源代码是这样的
<div id="item">
<h2>PV PV10924</h2>
<p>
<a href="http://www.example.com"><img src="image4.jpg">
</p>
</div>
<div id="item">
<h2>PV PV10925</h2>
<p>
(assign a value)
</p>
</div>
<div id="item">
<h2>PV PV10926</h2>
<p>
<a href="http://www.example.com"><img src="image5.jpg">
</p>
</div>
我一直在寻找是否有办法捕获父节点然后执行 if 语句以查看子节点是否存在然后执行 xpath 如果没有分配节点值 x
阅读障碍不是我的强项,但相信我,我正在努力……
谁能告诉我实现这一目标的最佳路线/方法....
【问题讨论】:
-
所以你想检查
<div id="item">里面是否有一个带有img的anchor的孩子?这真的是标记吗?它具有相同的多个 id,这没有意义 -
是本质上是的,如果有一个有效的子元素,那么通过 if 语句执行捕获,否则将分配一个默认值,以便构建数组以匹配网页。我相信您在下面的 sn-p 将不仅仅是通过查看它来测试它来解决问题。我以前没有见过“评估”功能,所以我还要阅读一些关于保持大脑专注所需的咖啡。是的,你可以测试它。就像名称本身一样评估 xpath 查询。很高兴这有帮助