2009-08-31 144 views

回答

1

這取決於外部頁面是本地還是不同的域。如果它是本地的,你可以在jQuery庫中使用$ .load()。這有一個可選的參數來指定哪些元素在遠程DOM加載它:

$("#links").load("/Main_Page #jq-p-Getting-Started li"); 

如果頁面上的其他領域,你需要一個代理腳本。你可以用PHP和phpQuery(php的jQuery端口)庫來做到這一點。您只需使用file_get_contents()來獲取實際的remote-dom,然後根據類似jQuery的選擇器提取所需的元素。

+0

頁面不是本地的,asp.net中是否有任何圖書館? – Wineshtain 2009-08-31 20:32:43

0
$f = fopen('http://www.quran.az/2/255', 'r'); 

等等...

0

要加載.NET中的網頁,使用HttpWebRequest類。

示例從MSDN,here採取:

private string StringGetWebPage(String uri) 
    { 
     const int bufSizeMax = 65536; // max read buffer size conserves memory 
     const int bufSizeMin = 8192; // min size prevents numerous small reads 
     StringBuilder sb; 

     // A WebException is thrown if HTTP request fails 
     try 
     { 
      // Create an HttpWebRequest using WebRequest.Create (see .NET docs)! 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); 

      // Execute the request and obtain the response stream 
      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
      Stream responseStream = response.GetResponseStream(); 

      // Content-Length header is not trustable, but makes a good hint. 
      // Responses longer than int size will throw an exception here! 
      int length = (int)response.ContentLength; 

      // Use Content-Length if between bufSizeMax and bufSizeMin 
      int bufSize = bufSizeMin; 
      if (length > bufSize) 
       bufSize = length > bufSizeMax ? bufSizeMax : length; 

      // Allocate buffer and StringBuilder for reading response 
      byte[] buf = new byte[bufSize]; 
      sb = new StringBuilder(bufSize); 

      // Read response stream until end 
      while ((length = responseStream.Read(buf, 0, buf.Length)) != 0) 
       sb.Append(Encoding.UTF8.GetString(buf, 0, length)); 

     } 
     catch (Exception ex) 
     { 
      sb = new StringBuilder(ex.Message); 
     } 

     return sb.ToString(); 
} 

注意這將返回整個頁面而不是它只是一個部分。然後,您需要篩選頁面以查找您要查找的信息。

0

一旦按照Michael Todd的說法得到整個頁面,您可能需要使用子字符串方法來靜態分割內容,或者您​​可以使用regex以更動態的方式來獲取內容。關於正則表達式在ASP.Net的介紹文章可以找到here。祝你好運!

+0

OP也可以嘗試使用'XmlDocument'來解析頁面並獲取特定的節點。 – outis 2009-09-01 20:00:57