更新:源代码与Developer Tools显示的有很大不同。PHP Xpath刮掉可能的命名空间问题
检查出源:视图-出处:http://www.machinerytrader.com/list/list.aspx ETID = 1 & CATID = 1002
是这样的JavaScript需要由一个呈现浏览器转化为html?如果是这样,我怎么能让PHP做这个过程,以便我有Html解析?奇怪的是,您可以使用Xpath Checker来返回我正在查找的项目(请参阅下文),但是您无法访问完整的HTML!
(Xpath的://表[含有(@id, 'ctl00_ContentPlaceHolder1')和(包含(@id “tblContent”)或含有(@id “tblListingHeader”))])
END UPDATE
我需要从本网站刮取一些信息以便定期进行工作。我正在尝试编写一些PHP代码来抓取这些数据。我认为我在这里有一些命名空间问题,阅读了SO上的其他一些帖子。我以前从未遇到名称空间问题,并使用另一个SO帖子中显示的方法(无效:)。
看来,xpath查询并不是出于任何原因,如果您有任何猜测或解决方案。如何处理这个问题,我很开放的建议
而且,这里是我的代码输出:
object(DOMXPath)#2 (0) {
}
Debug 1
array(0) {
}
array(0) {
}
我离开了,我的var_dump testarray以及创建和的var_dump otherarray代码的底部。它们的输出包含在上面,显然,如果DOMXPath元素的长度为0,那么这两个数组也是空的。
$string = 'http://www.machinerytrader.com/list/list.aspx?ETID=1&catid=1002';
$machine_trader = file_get_contents($string);
$xml = new DOMDocument();
$xml->loadHTML($machine_trader);
$xpath = new DOMXPath($xml);
$rootNamespace = $xml->lookupNamespaceUri($xml->namespaceURI);
$xpath->registerNamespace('x', $rootNamespace);
$tableRows = $xpath->query("//x:table[contains(@id, 'ctl00_ContentPlaceHolder1') and (contains(@id,'tblContent') or contains(@id,'tblListingHeader'))]");
var_dump($xpath);
$testarray = array();
$otherarray = array();
foreach ($tableRows as $row)
{
echo "Debug 1"."\n";
$testarray[] = $row->nodeValue;
}
我担心这将是答案:(感谢指引我到NodeJS ...将考虑它! – Dedwards