如何使用 symfony dom 爬虫 select 一个 link 使用它的 id 或它的标签?

How to select a link using its id or its label with the symfony dom crawler?

是否可以通过 symfony 爬虫 select 一个 link 使用它的 id 或者它的 class ?

我试过:

$crawler()->selectLink('#return-button')->link();
$crawler()->selectLink('.btn.return')->link();

但是我有错误:

InvalidArgumentException: The current node list is empty.

selector 是否仅使用 a 标签的内容有效?

我不这么认为:

public selectLink ( string $value ) : Crawler

其中 $value 是一个字符串,即 link 文本:

symfony.component.domcrawler/Crawler/selectLink

不过你可以试试:

$crawler->filter('body')->children('a.lorem')->attr('href'); //if you need the link

或者可能,这是使用 ids:

$crawler->filter('body')->children('a@foo');

你应该自己弄清楚,如果检查这个:

symfony/components/dom_crawler

试试这个:

$myLink = $crawler->filter('#return-button')->text();
$myLink = $crawler->filter('.btn.return')->text();

这将 return link 或按钮文本,然后:

$crawler()->selectLink($myLink)->link();

这确实比通过文本选择 link 更好。祝你好运:-)

是的,它仅适用于 link 文本或 alt 属性,前提是您的 link 是图像。

filter()方法使用CssSelector组件将选择器转换为XPath表达式,然后像selectLink()一样调用filterRelativeXPath(),所以他们return 相同的类型,你应该可以调用

$crawler->filter('#return-button')->link();

如果 class 选择器 return 有多个匹配,因为 link() 只在第一个节点上工作,你需要调用 links() :

$crawler->filter('.btn.return')->links();