我正在使用DomCrawler组件:
http://symfony.com/doc/current/components/dom_crawler.html
这是我使用的代码:
- $link = $crawler->filter('#product a[data-type="bla"]');
这似乎有效,如下所示:1:
- echo count($link);
但是,我永远不会比这更进一步的过滤.我不能做:
- $link->filter('img')->attr('src');
这将导致以下错误消息:
- The current node list is empty.
但是,我确信不知道.
我已经尝试了其他元素的语法,它总是一样的.我做错了什么或者这是不可能的(像css一样的语法,而不是xpath)
我不能跟随你的问题.使用两个软件库dom-crawler和
css-selector的当前开发版本(以及2.1.0和2.2.0版本),您提供的示例代码工作正常,考虑到以下示例HTML:
- <?PHP
- use Symfony\Component\DomCrawler\Crawler;
- // require dependencies here
- $html = <<<'HTML'
- <!DOCTYPE html>
- <html>
- <body>
- <p class="message">Hello World!</p>
- <p>Hello Crawler!</p>
- <div id="product">
- <a data-type="bla">
- <img src="OK">
- </a>
- </div>
- </body>
- </html>
- HTML;
- $crawler = new Crawler($html);
- $link = $crawler->filter('#product a[data-type="bla"]');
- echo var_dump(count($link));
- var_dump($link->filter('img')->attr('src'));
正如你可以看到,这正是你的代码(只是有点不同,但本质上不是),它给出了以下输出:
- int(1)
- string(2) "OK"
你有运行作曲家更新吗?你仔细检查了输入吗?