Php DomCrawler筛选器XPath查询
我有一些html,如下所示:Php DomCrawler筛选器XPath查询,php,symfony,xpath,domcrawler,Php,Symfony,Xpath,Domcrawler,我有一些html,如下所示: <html> <body> ... other html stuff ... <form method="post" action="goSomewhere"> <input type="hidden" value="something"> <input type="hidden" value="something2"> <table> <tr><td
<html>
<body>
... other html stuff ...
<form method="post" action="goSomewhere">
<input type="hidden" value="something">
<input type="hidden" value="something2">
<table>
<tr><td><input type="checkbox" name="123">Stuff 1</td></tr>
<tr><td><input type="checkbox" checked name="456">Stuff 2</td></tr>
<tr><td><input type="checkbox" name="789">Stuff 3</td></tr>
</body>
</html>
这成功地过滤掉了特定的
内容,但问题是它只返回
内容。如您所见,还有其他
不在
中,我也需要它们
有人能帮我解答这个问题吗?谢谢 您正在寻找
//form//td[not(normalize-space()=“Stuff 2”)]/input |//input[not(祖先::表)]
谢谢!这似乎奏效了!你知道我怎样才能得到表单
标签中的所有项目吗?由于某些原因,输入
返回值似乎为空。实际上,我还需要表/td
内容。我试着改变。/form |//form[不是(祖先::form)]
,但它似乎没有任何作用。我不确定我是否理解。你能解释一下你错过了哪些节点吗?如果我对爬虫对象(包含所有输入)进行打印,\r
,它会打印空对象。因此,我基本上是在改变我的原始请求:不是获取所有输入(减去带有“Stuff 2”名称的特定输入),而是获取
和
之间的所有内容。您可以使用爬虫类的reduce()
方法,该方法接受用于过滤节点的回调。
$query = "//form//td[not(normalize-space() = 'Stuff 2')]";