2

我已经四处寻找这个,我一直找不到它。我只是想使用通配符从 html 中选择元素。例如,对于我正在抓取的页面,此选择器在 Jquery 的控制台中完美运行:

$("tr[id^='informal_']")

换句话说,抓取所有 id 以“informal_”开头的行。我试过 xpath 但没有运气。xpath 是 XML 独有的吗?无论如何,如果有人有任何解决方案,我将不胜感激。

编辑

我使用的xpath:

  $doc = new DOMDocument($html);
  $doc->strictErrorChecking = false;
  $xpath = new DOMXPath($doc);
  $table_rows = $xpath->query("//*tr[starts-with(@id, 'informal_')]");

解决方案 我决定使用:http ://code.google.com/p/phpquery/

这是代码:

require('phpQuery/phpQuery.php');

    $doc = phpQuery::newDocumentHTML($html);;
    $table_rows = $doc->find("tbody tr[id^='informal_']");
4

2 回答 2

3

相当于 jQuery 选择器

tr[id^='informal_']

在 XPath 中,是

//tr[starts-with(@id, 'informal_')]

你非常接近答案,只是*那个妨碍了。

于 2012-08-18T09:06:52.200 回答
0

*tr是无效的 XPath,因为您将通配符与文字节点名称混合在一起。

你只需要*,即*[starts-with...

于 2012-08-18T08:39:50.740 回答