我們正在創建一個腳本。刮掉某些數據的網頁
本質上是用戶進入一個表單域:3358928 OnSubmit ajax,訪問下面的頁面,附加用戶輸入到url中的數字字符串。
在該網址上,是第一個有名有姓。 我們將如何刮掉名字和姓氏,並將其回顯至我們的表格。
從抓取頁面開始,問題就出現了。
任何幫助表示讚賞。
我們正在創建一個腳本。刮掉某些數據的網頁
本質上是用戶進入一個表單域:3358928 OnSubmit ajax,訪問下面的頁面,附加用戶輸入到url中的數字字符串。
在該網址上,是第一個有名有姓。 我們將如何刮掉名字和姓氏,並將其回顯至我們的表格。
從抓取頁面開始,問題就出現了。
任何幫助表示讚賞。
首先,您的Web服務器必須設置爲代理所有客戶端的請求。否則,第三方服務器would have to send an Access-Control-Allow-Origin header和訪問者的瀏覽器將不得不支持跨域XMLHttpRequest。 (Flash/Silverlight同樣需要crossdomain.xml文件。)
這正是http://ajax-cross-domain.com/的工作方式。 (這個特定的代理腳本恰好爲JavaScript編碼第三方服務器的響應。)
我注意到特定頁面包括XHTML文檔類型,這似乎表明,你可以使用本地的XMLHttpRequest的responseXML
財產或jQuery(與AJAX Cross Domain相對)利用瀏覽器的XML解析器。不幸的是,這只是另一個輸出無效的XML —的網站,它不能正確編碼&符號作爲&
。
因此,您很可能會訴諸正則表達式,即not ideal。最有可能,最簡單的方法是找到td
元素(依靠事實完全相同的標籤沒有嵌套)的文本:
// Creating the regexp object
var regex = /<td class="BodyFont">(.*?)<\/td>/g;
// Execute this line of code as many times as needed.
contentsOfNextTd = regex.exec(textOfThePage)[1];
排序的醜,認爲這將是,如果只是簡單得多我們有有效的XML可以使用。如果您有選擇,我會建議在自己的服務器上抓取頁面,並返回格式良好的JSON或XML響應—無論如何您都需要服務器端代理,並且它會使客戶端代碼更簡單。
Hiya理想,是的,不幸的是,標籤無數次重複。 偉大的迴應壽,勾選:) – 422 2010-11-13 03:33:47
該域名是否屬於你?如果沒有,你不能做你想做的事,因爲AJAX只能從同一個域中檢索頁面。 – casablanca 2010-11-13 00:51:38
我認爲現在可以將ajax配置爲訪問ext域名。 在:http://alvinabad.wordpress.com/2009/02/13/feb13/ – 422 2010-11-13 00:54:46
事實上Snook.ca和其他許多人實現跨域AJAX請求。一個這樣的例子是http://www.ajax-cross-domain.com/ – 422 2010-11-13 00:57:39