更新:源代碼與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