我可以使用 DOMXPath 在 Li 类中提取图像源吗? [复制]
Posted
技术标签:
【中文标题】我可以使用 DOMXPath 在 Li 类中提取图像源吗? [复制]【英文标题】:Can I extract image sources within an Li class using DOMXPath? [duplicate] 【发布时间】:2012-06-16 15:51:34 【问题描述】:可能重复:Selecting a css class with xpath
我正在尝试提取像这样的 html 中所有图像的源代码
<li class="carousel_item">
<img src="http://www.xxxx.com/1fc1c1c2db5852e08ffcff38.jpg"
style="margin-bottom:1px"
class="image_error" />
<span class="image_error" title="jpg"></span>
<span class="image_error" title="2.jpg"></span>
</li>
当我使用以下命令时,我会获取文档中的所有图像
$nodelist = $xpath->query( "//img/@src" );
foreach ($nodelist as $n)
echo $n->nodeValue."<br>";
但我只想要 class="carousel_item" 中列出的项目
这可能吗?
【问题讨论】:
是的,有可能。您具体想知道什么? 【参考方案1】:当然,只需在查询中包含<li>
及其类属性即可。您只需要将 xpath 字符串更改为:
$nodelist = $xpath->query( "//li[@class='carousel_item']/img/@src" );
Demo
【讨论】:
谢谢先生,完美运行。 HTML 中的 class 属性是一个空格分隔的列表,这使它变得不那么琐碎。从技术上讲,您在这里回答的内容一定没有错,但也一定不是对的。 @hakre - 好点子 - 如果是这种情况 user1197941,您必须用 bsdnoobz 刚刚指出的contains()
函数替换类选择器。
嗯,@bsdnoobz 的回答有点快,所以也很短。你想知道全部真相吗?这是我的博客文章,解释了CSS Selector to XPath conversion 的详细信息,这里是 xpath://*['P' = translate(name(.), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')]/@*['CLASS' = translate(name(.), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ') and contains(concat(' ', normalize-space(.), ' '), concat(' ', 'intro', ' '))]
- 这是一个 P
元素与类 intro
。
@hakre - 非常有趣的阅读!刚刚收藏了,谢谢你的信息【参考方案2】:
$nodelist = $xpath->query('//li[contains(@class, "carousel_item")]/img/@src');
【讨论】:
以上是关于我可以使用 DOMXPath 在 Li 类中提取图像源吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
PHP DOMXPath 查询使用元素的 innerHTML/nodeValue 来查找并返回该元素
codeception 中的 fillField 方法不起作用抛出 DOMXPath::query(): Invalid expression