我有一個選擇元素,我想使用其他網站的信息動態創建選項值。信息可以在http://www.dandwiki.com/wiki/SRD:Classes看到。這是「基礎班」的列表。我曾嘗試使用DOMDocument類,但我看不到任何使用url而不是html文件的方式。我曾嘗試使用file_get_html和foreach循環,但無法使其與網站上的數據格式一起工作。它位於dt/dd元素中,並且元素沒有id。從網站上獲取信息的最佳方式是什麼,併爲我的select元素中的每個類創建選項值?如何解析html和從dt/dd創建數組
回答
我通常使用http://www.bit-101.com/xpath/來測試查詢。你會最終得到這樣的東西。
<?php
$url = 'http://www.dandwiki.com/wiki/SRD:Classes';
$html = file_get_contents($url);
$dom = new DOMDocument();
//from file
@$dom->loadHTML($html);
//Creating a new DOMPath
$Xpath = new DOMXPath($dom);
// Get links
// //big Selects all <big> elements in the document.
// [text()="Base Classes"] with text "base classes"
// /.. get parent class
// /.. get parent class
// //a select all <a> elements
// /text() get text
$query = '//big[text()="Base Classes"]/../..//a/text()';
$entries = $Xpath->query($query);
foreach ($entries as $entry) {
echo $entry->nodeValue . "<br>";
}
?>
非常感謝你!我一直在嘗試對你的代碼片段進行反向工程,並且我認爲除了'/../ ..'之外,我已經找到了一切。根據我讀過的內容和你的評論,/ ..獲取當前節點的父節點。如果查詢的'// big ...'部分選擇了所有元素和文本'Base Classes',爲什麼我們需要父節點?此外,爲什麼我們需要該父節點的父節點?或者我有倒退? '/ ..'是否正確地工作,以便我們以'/ a'開始並獲取該節點的父節點()? –
Duders
此外,代碼不工作,我認爲這是因爲它不識別DOMDocument類。在index.php文件中,變量'$ dom'被加亮,並且提示建議創建DOMDocument類。我在XAMPP和PHP 5.5.24上使用Netbeans 8.0.2。在phpinfo()部分中,Libxml處於活動狀態並且已啓用,並且已啓用DOM/XML。在php.ini文件中,我有extension_dir =「C:\ PHP \ ext」。我見過論壇討論php-xml模塊和dom擴展,但我不知道如何實現它。 – Duders
- 1. 如何從PHP數組創建HTML表?
- 2. 如何解析數組並創建具有解析值的新數組?
- 3. 如何從csv列表創建/解析數組列表?
- 4. 如何使用Angular.js從解析的HTML文本創建列表?
- 5. 如何從html解析li
- 6. 用Javascript解析XML並創建數組
- 7. 解析HTML到PHP數組
- 8. 如何從解析的json數據解析html?
- 9. 從解析的HTML表格構建數組
- 10. 如何解析HTML和返回數組中的值使用regex.split
- 11. 如何創建一個三維數組並將其解析?
- 12. 從Wunderground解析HTML數據
- 13. 解析JSON從數組和對象HTML表格
- 14. 從解析的JSON字符串創建4個數組
- 15. 解析HTML來創建一個XML
- 16. 在JavaScript中創建和解析3D數組?
- 17. 如何解析HTML到React組件?
- 18. UITableView與部分和解析數據如何創建cellForRowAtIndexPath
- 19. 從javascript數組創建HTML表格
- 20. 從多維javascript數組創建html表
- 21. 如何創建和組織JavaScript數組?
- 22. $ .parseJSON()如何解析數組?
- 23. 如何解析JSON數組?
- 24. 如何解析json數組?
- 25. 如何解析JS數組?
- 26. 如何解析數組?
- 27. 如何構建HTML解析器?
- 28. 如何從HTML創建PDF?
- 29. 如何在Spring中爲html創建視圖解析器?
- 30. 如何從函數創建數組?
使用XPath。我只是在Firebug中測試了這個JavaScript代碼,它返回了一個基類的文本數組:'$ x('// big [text()=「Base Classes」] /../..// a/text ()')。map(function(node){return node.textContent;})'。您應該能夠在PHP中使用相同的XPath表達式。 – bgoldst