2012-04-14 50 views
0

我想開發一個平臺,用戶可以輸入一個網址,然後我的網站將打開iframe的網頁。現在用戶可以通過簡單的點擊修改他的網站,我會爲他提供諸如「刪除此元素」,「複製此元素」等選項。我差點通過。許多網站在iframe中完美打開,但是一些網站出現了一些錯誤。我找不到原因,請求你的幫助。在開發網絡刮板的問題

我已經解決了其他問題,如XSS問題。
以下是我遵循的步驟: -
使用JavaScript並將請求發送到我的Java服務器,該服務器連接到用戶指定的URL並獲取HTML,然後使用Jsoup HTML分析器將相對URL轉換爲絕對URL然後用Java將HTML保存到我的磁盤。然後我將保存的HTML顯示到我的iframe

有什麼不對嗎?
一些網站正在完美工作,但有一些網站沒有。

例如: -
當我試圖打開http://www.snapdeal.com它給我的 Uncaught TypeError: Cannot read property 'paddingTop' of undefined 錯誤。我不明白爲什麼會發生這種情況..

更新 我真的不知道這是如何實施的? @http://www.proxywebsites.in/browse.php?u=Oi8vd3d3LnNuYXBkZWFsLmNvbQ%3D%3D&b=13&f=norefer

回答

0

你可以嘗試多事情。在您的代理腳本中,您將您的網頁保存在磁盤上,然後加載到iframe中。我認爲不要將你保存在磁盤上的頁面加載到iframe中,而是嘗試在瀏覽器中打開該頁面。現在,所有這些將其頁面加載到iframe中的網站都會打開,而不會出現任何錯誤。 試試這個我認爲它是一項工作

+0

嗨,它的大部分網站現在工作但仍然snapdeal.com投擲相同的錯誤,其背景圖像不加載到我的網頁.. – sachinjain024 2012-04-15 08:50:31

1

2個問題,選擇任何你喜歡:

  • 你的服務器端代理代碼包含錯誤
  • 大量的網站有任何明確的框架,斷碼或至少希望是頂層框架。
+0

我已經發布了我的服務器端代碼,現在被Lina建議後,我不會將頁面加載到iframe中,而是在瀏覽器中打開頁面,但它不適用於少數站點。你對其他一些可能的錯誤有所瞭解 – sachinjain024 2012-04-15 08:52:05

0

我的代理服務器端代碼: -

DateFormat df = new SimpleDateFormat("ddMMyyyyHHmmss"); 
    String dirName = df.format(new Date()); 

    String dirPath = "C:/apache-tomcat-7.0.23/webapps/offlineWeb/" + dirName; 
    String serverName = "http://localhost:8080/offlineWeb/" + dirName; 

    boolean directoryCreated = new File(dirPath).mkdir(); 
    if (!directoryCreated) 
     log.error("Error in creating directory"); 

    String html = Jsoup.connect(url.toString()).get().html(); 
    doc = Jsoup.parse(html, url); 

    links = doc.select("link"); 
    scripts = doc.select("script");  
    images = doc.select("img"); 

for (Element element : links) { 
     String linkHref = element.attr("abs:href"); 
     if (linkHref != "") { 
      element.attr("href", linkHref); 
     } 
} 

for (Element element : scripts) { 
    String scriptSrc = element.attr("abs:src"); 
    if (scriptSrc != "") { 
     element.attr("src", scriptSrc); 
    } 
} 

for (Element element : images) { 
    String imgSrc = element.attr("abs:src"); 
     if (imgSrc != "") { 
      element.attr("src", imgSrc); 
      log.info(imgSrc); 
     } 
} 

,現在我剛剛返回的路徑在哪裏保存我的html文件 就是這樣對我的服務器代碼

+1

你這麼多的代碼似乎是正確的..可能有些網站不允許他們的網站在iframe中打開。這是我能想到的唯一原因 – 2012-04-14 06:38:01