[英]PHP - DOMXpath does not return any nodes when it should
我从 Selenium 中提取 HTML,然后使用 Xpaths 从 HTML 中提取数据。
这是 Xpath:
/html/body/div[2]/div[1]/div/div/div/div/ul/li/div[1]/h3/a
这是我的代码:
$data = $webdriver->getPageSource();
d($data, $urltemplate);
$doc = new DOMDocument();
$doc->loadHTML($data);
$xp = "/html/body/div[2]/div[1]/div/div/div/div/ul/li/div[1]/h3/a";
$xpatho = new DOMXpath($doc);
$elementsn = $xpatho->query($xp);
d(get_class($elementsn),$elementsn->count(),$xp,$name);
// d() is a custom function like var_dump().
我总是得到 $elementsn->count() = 0。
这是$数据:
我正在尝试提取诸如“NAD M10 BLUOS ...”、“NAD M12 DIRECT DIGITAL ...”之类的字符串...
我将 HTML 保存到一个文件中,然后在我的浏览器中打开它。 我附上了我要检索的数据的屏幕截图(以蓝色突出显示):
基本上,HTML 页面是一个产品列表,我希望提取所有产品名称。 为了确认,我使用了 Chrome 开发者工具,并使用了完整的复制 Xpath function。 对于某些产品名称,我有以下 Xpath:
/html/body/div[2]/div[1]/div/div/div/div/ul/li[1]/div[1]/h3/a
/html/body/div[2]/div[1]/div/div/div/div/ul/li[3]/div[1]/h3/a
我猜想这将概括为:
/html/body/div[2]/div[1]/div/div/div/div/ul/li/div[1]/h3/a
但是,我不断得到一个 count = 0 的 DOMNodeList。为什么会这样,我如何检查错误是什么,如果有的话?
PS:这是原网页: http://lenbrook.com.sg/3-shop-by-brand#/page-4/price-49-8667
尝试更改您的$xp
$xp = '//a[@class="product_link"]/text()'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.