php - 如何使用xpath获取ul内所有图像的src

标签 php html xpath web-scraping

我需要找到属于该 ul 的所有图像的 src。我正在使用 xpath 来做到这一点。但它仅返回第一张图像的 src 。如何获取所有src?这是我的 HTML 结构。

<ul id="product-slider">
  <li >
    <img src="1.jpg" width="310" height="363" />
  </li>
  <li>
    <img src="2.jpg" style="opacity: 1;">
 </li>
 <li>
    <img  width="310" height="363" src="3.jpg">
 </li>      
</ul>

这是我的代码片段。

$img = $xpath->query("//ul[@id='product-slider']//img/@src");
foreach($img as $i){
  echo $i->nodeValue;
}

它找不到除第一个图像之外的所有图像的 src。 有人可以提供一些帮助吗?

看看这个 http://codepad.viper-7.com/RiiFfK

最佳答案

要获取此 ul 内所有图像(实际上是 src 属性中的所有值)的列表,在您的情况下,您可以使用 XPath Axes:

//ul[@id='product-slider']/descendant::img/@src

它的作用是:

  1. /ul[@id='product-slider'] 选择带有 id='product-seller'ul 元素>

  2. /descendant::imgul 中选择所有后代(子代、孙子等)

  3. /@src 选择这些后代中每一个的 src 属性。

XPath Axes 是一个很棒的工具,您可以在此处找到有关它的更多信息:http://www.w3schools.com/xpath/xpath_axes.asp (我知道它们并不是所有内容最可靠的来源,但是这个 XPath 教程是一个很好的介绍)。

编辑:使用键盘上OP的新代码片段作为示例: 源代码中捕获的元素来自 Snapdeal Link下面的ul,其中只有第一个img标签包含src属性。

	<ul id="product-slider" class="mainImageSlider">
		<li>
			<img title="Apple iPhone 5S 16 GB (Gold)"  class="jqzoom zoomPad lazyBg" itemprop="image"  src="http://n2.sdlcdn.com/imgs/a/j/x/large/Apple-iPhone-5S-16-GB-SDL218153659-1-d5617.jpg" width="310" height="363" alt="Apple iPhone 5S 16 GB (Gold)" bigimage="http://n4.sdlcdn.com/imgs/a/j/x/Apple-iPhone-5S-16-GB-SDL218153659-1-d5617.jpg">
		</li>
		<li>
			<img title="Apple iPhone 5S 16 GB (Gold)"  class="jqzoom zoomPad lazyBg"  lazySrc="http://n1.sdlcdn.com/imgs/a/j/x/large/Apple-iPhone-5S-16-GB-SDL218153659-2-af89e.jpg" width="310" height="363" alt="Apple iPhone 5S 16 GB (Gold)" bigimage="http://n1.sdlcdn.com/imgs/a/j/x/Apple-iPhone-5S-16-GB-SDL218153659-2-af89e.jpg">
		</li>
		<li>
			<img title="Apple iPhone 5S 16 GB (Gold)"  class="jqzoom zoomPad lazyBg"  lazySrc="http://n4.sdlcdn.com/imgs/a/p/0/large/Apple-iPhone-5S-16-GB-SDL218153659-3-14019.jpg" width="310" height="363" alt="Apple iPhone 5S 16 GB (Gold)" bigimage="http://n4.sdlcdn.com/imgs/a/p/0/Apple-iPhone-5S-16-GB-SDL218153659-3-14019.jpg">
		</li>
		<li>
			<img title="Apple iPhone 5S 16 GB (Gold)"  class="jqzoom zoomPad lazyBg"  lazySrc="http://n4.sdlcdn.com/imgs/a/p/0/large/Apple-iPhone-5S-16-GB-SDL218153659-4-fa8f3.jpg" width="310" height="363" alt="Apple iPhone 5S 16 GB (Gold)" bigimage="http://n4.sdlcdn.com/imgs/a/p/0/Apple-iPhone-5S-16-GB-SDL218153659-4-fa8f3.jpg">
		</li>
	</ul>

关于php - 如何使用xpath获取ul内所有图像的src,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28259968/

相关文章:

html - 如何使用同一个按钮更改 Angular js 函数内按钮的颜色?

php - 显示mysql Select查询结果

php - 一月份的重复天数

c# - 正则表达式反对 XPath 之后的标记?

.net - XPath 和选择单个节点

c# - XPath 查询适用于在线工具,但不适用于 .NET

xml - XPath 如何处理 XML 命名空间?

php - 如何比较不同表中的两行并在行匹配时显示表值?

php - MySQL:按两列分组并求和

javascript - 在 <td> 而不是 <tr> 上应用 Angular ng-repeat?