2011-01-13 172 views

回答

0

我知道我會做到這一點在理論上 - 使用捲曲或某些應用程序進行下載,內容存儲到一個變量,然後解析它爲任何你需要

0

是的,你需要下載頁面內容和在裏面搜索你想要的東西。如果碰巧你想搜索整個microsoft.com網站,那麼你應該編寫自己的網絡爬蟲,使用現有的爬蟲或使用像谷歌的搜索引擎API。

0

是的,您必須下載頁面,並且爲了確保獲得完整的內容,您需要執行腳本幷包含動態內容 - 就像瀏覽器一樣。

我們無法在遠程資源上「搜索」某些內容,這不受我們控制,並且默認情況下沒有任何Web服務器提供「掃描我的內容」方法。

很可能你會想用瀏覽器引擎(webkit或其他)加載頁面,並在該引擎的內部DOM結構上執行搜索。

0

如果你想自己做搜索,那麼顯然你必須下載頁面。 如果你打算採用這種方法,我推薦Lucene(除非你想要一個簡單的子字符串搜索)

或者你可以有一個web服務,爲你做。您可以請求web服務以grep的網址並回傳其結果。

+0

那麼是否有可能做出一個Web服務,給我的結果是否一個特定的字符串存在於網頁給定其URL? – 2011-01-13 06:54:20

1

您只需要在網頁上發出http請求並獲取其所有內容,然後您可以搜索必要的單詞,下面的代碼可能會幫助您這樣做。

public static void main(String[] args) { 
    try { 
     URL url; 
     URLConnection urlConnection; 
     DataOutputStream outStream; 
     DataInputStream inStream; 

     // Build request body 
     String body = 
     "fName=" + URLEncoder.encode("Atli", "UTF-8") + 
     "&lName=" + URLEncoder.encode("Þór", "UTF-8"); 

     // Create connection 
     url = new URL("http://www.example.com"); 
     urlConnection = url.openConnection(); 
     ((HttpURLConnection)urlConnection).setRequestMethod("POST"); 
     urlConnection.setDoInput(true); 
     urlConnection.setDoOutput(true); 
     urlConnection.setUseCaches(false); 
     urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
     urlConnection.setRequestProperty("Content-Length", ""+ body.length()); 

     // Create I/O streams 
     outStream = new DataOutputStream(urlConnection.getOutputStream()); 
     inStream = new DataInputStream(urlConnection.getInputStream()); 

     // Send request 
     outStream.writeBytes(body); 
     outStream.flush(); 
     outStream.close(); 

     // Get Response 
     // - For debugging purposes only! 
     String buffer; 
     while((buffer = inStream.readLine()) != null) { 
      System.out.println(buffer); 
     } 

     // Close I/O streams 
     inStream.close(); 
     outStream.close(); 
    } 
    catch(Exception ex) { 
     System.out.println("Exception cought:\n"+ ex.toString()); 
    } 
}