AJAX響應返回完整的HTML頁面。我需要提取正文(<body>
和</body>
)標籤之間的片段。這需要使用JavaScript在客戶端完成。任何幫助將不勝感激。如何從JavaScript中的AJAX響應中提取正文(<body> ...</body>)標記之間的片段
4
A
回答
0
如果您的HTML頁面在Web上,那麼您可以使用YQL。
例如,如果你的網頁的網址爲http://xyz.com/page.html和你想要的一切在主體元素 做這樣
select * from html where url="http://xyz.com/page.html" and xpath='//body'
如果你是新來YQL閱讀本http://en.wikipedia.org/wiki/YQL_Page_Scraping
也有簡單的方法來做到這一點使用Chromyqlip擴展https://chrome.google.com/extensions/detail/bkmllkjbfbeephbldeflbnpclgfbjfmn
希望這會幫助你!
4
最簡單但種類最糟糕的方式是對響應文本進行簡單的字符串黑客攻擊。
var bodyhtml= html.split('<body>').pop().split('</body>')[0];
這是在一般情況下不盡人意,但可能是可行的,如果你知道正在返回的HTML的精確格式(例如,有是在<body>
沒有屬性,該序列<body>
和</body>
不用在頁面中間的評論中,等等)。
另一個仍然相當壞的方法是編寫整個文檔到新創建的<div>
撈出你想要的,不關心,寫<html>
或<body>
一個<div>
內被打破元素的innerHTML
。您將無法通過這種方式可靠地將<head>
中的子元素與<body>
中的子元素分開,但這就是例如jQuery所做的。
更健壯,但更痛苦的方法是使用一個單獨的HTML文檔:
var iframe= document.createElement('iframe');
iframe.style.display= 'none';
document.body.insertBefore(iframe, document.body.firstChild);
var idoc= 'contentDocument' in iframe? iframe.contentDocument : iframe.contentWindow.document;
idoc.write(htmlpage);
idoc.close();
alert(idoc.body.innerHTML);
document.body.removeChild(iframe);
,雖然這也將執行該文件中的所有腳本,潛在地改變它,這樣可能不令人滿意無論是。
0
// Get the XML object for the "body" tag from the XMLHttpRequest/ActiveXObject
// object (requestObj).
// NOTE: This assumes there is only one "body" tag in your HTML document.
var body = requestObj.responseXML.getElementsByTagName("body")[0];
// Get the "body" tag as an XML string.
var bodyXML;
// for Internet Explorer
if (body.xml) {
bodyXML = body.xml;
}
// for every other browser
if (typeof (XMLSerializer) != "undefined") {
var serializer = new XMLSerializer();
bodyXML = serializer.serializeToString(body);
}
這可以讓你的XML的「身體」的標籤,作爲一個字符串。不幸的是,它仍然包含了「<體>」和「< /身體>」,所以如果你只想要標記的內容,你將不得不剝離這些了。
你可能想看看在this page第二個示例(「示例HTML代碼2」)。
相關問題
- 1. 如何從<script>標記中的AJAX響應字符串讀取變量?
- 2. HtmlUnit:從<span>中提取文本<a>標記
- 3. 如何提取<a></a>之間的文字?
- 4. 意外的<head/> AJAX響應中的標記
- 5. 如何從響應中刪除「<?xml ...>」標記?
- 6. Jsoup - 從<a>標記中提取數據,在標記內
- 7. 如何在Python中提取<h1></h1>之間的href鏈接?
- 8. 從<a>調用ajax函數php文件中的標記
- 9. 提取HTML標記之間的文本
- 10. 如何使用JavaScript從Ajax響應字符串中正確提取HTML元素?
- 11. jQuery Ajax JSON響應與<img />在IE中的標記符中斷
- 12. 從javascript中提取<a>
- 13. 如何從JavaScript文件中提取一個XML片段?
- 14. 如何提取硒中的標記之間的數據
- 15. jsp表達式標記之間的區別<%和<%=
- 16. <script> javascript中的標記
- 17. 如何從ajax響應中找到$(xml)標記的長度
- 18. <span>之前的文本標記
- 19. <plugins>與Maven`pom.xml`中的<pluginManagement>標記之間的區別
- 20. <script> ajax響應中的標籤不被IE解析<= 8
- 21. 如何提取R中特定時間段之間的推文?
- 22. 如何從包含標題和正文的響應中提取JSON數據?
- 23. 如何從Ajax響應與jQuery提取Javascript代碼塊?
- 24. 從ajax響應中提取表格
- 25. 從ajax響應中提取數據
- 26. 好的,添加<script>標記*之前* <head>標記?
- 27. Ruby中+和<<之間的區別
- 28. 如何使用jQuery更改<span>標記</span>之間的值?
- 29. 如何從HTML中獲取所有<span>標記之間的數組文本?
- 30. <script><asp:repeater>中的標記
你使用任何JavaScript庫,或香草JavaScript? – dekomote 2010-09-27 11:31:43
'xmlhttp.responseXML.body'? – galambalazs 2010-09-27 11:45:50
感謝所有回答。現在,我們採取了串的方法,因爲我們知道正在返回的HTML的確切格式(我們正在創造它自己)。我查找YQL作爲這種需求的通用技術。 – 2011-02-17 22:03:17