如何使用 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');
你应该自己弄清楚,如果检查这个:
试试这个:
$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();
是否可以通过 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');
你应该自己弄清楚,如果检查这个:
试试这个:
$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();