2017-09-25 50 views
0

我正在製作一個程序來解析來自JavaScript庫的幾個數據庫網站頁面的一堆信息。只是通過調試控制檯,我已經想出瞭如何隔離我需要的信息,但我不知道如何從解析程序中訪問信息。我幾乎完全精通HTML/JavaScript,所以自然我堅持我所知道的應該是一個相對簡單的解析器。下面是什麼我打算做的基本思想:如何從單獨的URL獲取Document對象?

for (var i = 0; i < 5; i++) { 
    var outsideHTML = getDocumentByURL("https://www.example-database.com/page-"+i); 

    //other code that parses information from the variable "outsideHTML" 
} 

我只需要一個函數來充當getDocumentByURL()。提前致謝。

+0

您可以使用ajax調用獲取html,並將其託管到iframe並以此方式訪問。 –

+0

如果您使用'iframeElement.contentWindow.document',則必須具有CORS訪問權限。 – PHPglue

回答

0

由於一種叫做same-origin policy,您不能使用客戶端JavaScript,除非其他網頁是在同一個域中的網頁,或除非其它網站明確允許它通過支持JSONP訪問文件或其他網頁的其它內容或setting Access-Control-Allow-Origin headers。這聽起來像是你想要檢索一個網頁,所以JSONP是不相關的,並且在網頁上設置訪問控制 - 允許 - 原始標題是相當罕見的。因此,這可能無法按照您所描述的方式完成。

檢索從別的網站的數據,有一對夫婦方法可以採取:

  1. 運行服務器端代碼(即PHP,Node.js的,爪哇等)檢索其他網頁,提取您需要的信息。瀏覽器安全策略(如相同的源策略)不會影響服務器端代碼。
  2. 使用跨源代理(例如crossorigin.me)。此代理將爲您檢索數據並添加允許您訪問頁面內容的Access-Control-Allow-Origin標題。
  3. 根據您要實現的目標,您可能會將您的想法從網頁轉換爲瀏覽器擴展 - 瀏覽器擴展可以讓您自由地忽略同源策略。
  4. 向網站所有者詢問他們是否願意以更友好的格式提供數據以適應您。

請注意,前兩種方法都會導致請求來自服務器,而不是來自客戶端計算機。這意味着您無法檢索任何需要登錄該網站的信息。