php - DomCrawler,使用 first() 或 last() 或 eq() 在特定位置选择类
问题描述
我对class
在它的兄弟姐妹之间选择一个有点困惑......Html
结构如下。
<ul class="pipeLink">
<li class="pg">1</li><li class="pg"><a href="/wedding/clientList/?pn=2&tdfkn=14">2</a></li>
<li class="pg"><a href="/wedding/clientList/?pn=3&tdfkn=14">3</a></li>
<li class="pg"><a href="/wedding/clientList/?pn=4&tdfkn=14">4</a></li>
<li class="pg"><a href="/wedding/clientList/?pn=5&tdfkn=14">5</a></li>
<li class="pg"><a href="/wedding/clientList/?pn=6&tdfkn=14">6</a></li>
<li class="pg"><a href="/wedding/clientList/?pn=7&tdfkn=14">7</a></li>
<li class="pg"><a href="/wedding/clientList/?pn=8&tdfkn=14">8</a></li>
<li class="lastChild">
<a href="/wedding/clientList/?pn=2&tdfkn=14">next 30</a></li>
</ul>
页面中有 2 个ul.pipeLine
类。在页面的顶部和底部。我只想抓住第一个或第二个ul.pipeLine
并在其中迭代 a 标签的属性。所以我用下面的代码试了一下。
$links = $response->filter("ul.pipeLink")->last()->each(function($node){
return $node->filter("li a")->attr("href");
});
但是当我使用last()
or first()
oreq(0)
等时......它只在 a 标签内获取一个属性,没有别的。虽然我只想抓取ul.pipeLine
页面中的一个类并在其中进行迭代。
我的意思是预期的输出应该是:
/wedding/clientList/?pn=2&tdfkn=14
/wedding/clientList/?pn=3&tdfkn=14
/wedding/clientList/?pn=4&tdfkn=14
/wedding/clientList/?pn=5&tdfkn=14
/wedding/clientList/?pn=6&tdfkn=14
/wedding/clientList/?pn=7&tdfkn=14
/wedding/clientList/?pn=8&tdfkn=14
但这就像:
/wedding/clientList/?pn=2&tdfkn=14
有可能实现吗?
解决方案
好的,我解决了这个问题并将其发布在这里,作为以后遇到此问题的任何人的答案。
$links = $response->filter("ul.pipeLink")->last()->children("li a")->each(function($node){
return $node->attr("href");
});
推荐阅读
- javascript - 音频未在移动浏览器上加载(Plyr 播放器)
- vue.js - 如何通过路线名称转到子路线?
- javascript - 如何检查用户是否登录然后重定向?
- python - 用 Python 抓取新闻网站
- javascript - Javascript 删除具有重复属性的数组对象,同时保持最新出现
- xml - 通过 Xslt 将 xml 动态转换为 xml
- java - 如何使用 sslmode= 要求通过 jdbc 连接到 Amazon RDS?
- javascript - 如何让多个过滤器协同工作?HTML/JS
- python - 如何从 Linux 终端逐行执行 python 命令?
- typescript - 在 TypeScript 中针对接口键入非类