2017-04-03 44 views
0

我正在嘗試使用節點服務器從agular2應用程序中刮取一些信息。問題是我得到的響應是index.js文件,本質上是頁面的「loading ...」部分。如何向Angular2網站發送HTTP請求(用於抓取目的)?

我使用的NPM請求或要求,承諾包這樣的:

var rp = require("request-promise"); 

rp('https://someurl.com') 
    .then((html) => { 
     // Do something with the response 
    }) 
    .catch((err) => { 
     console.log(err); 
    }) 

但我無法弄清楚是否有可能等待頁面實際加載。我已經看過可能使用Angular Universal,但是我需要在所有數據加載完畢並且網站所有者反對使用Universal的情況下獲取數據。

有沒有辦法讓這項工作?

+0

你聽說過類似HATEOAS的電話嗎?鑑於該應用程序是基於Angular2的,您可以對其AJAX調用規則/語法進行反向工程,然後通過直接要求包含AJAX參數的url來檢索json格式的數據。然而,這種方法只有在網站是對所需數據的「代理」時纔有意義。如果您想要檢索以您在網站上直接進行的操作爲條件的數據,則必須使用動態網頁抓取技術,如下面的Dmytro Medvid所解釋的。 – Kanak

回答

0

首先,您需要獲取完整呈現的頁面。不幸的是,JS呈現的網頁無法在沒有呈現過程的情況下到達,但我們可以使用「無頭」瀏覽器(如PhantomJS)來完成此過程。

「無頭瀏覽器是沒有圖形用戶界面 的web瀏覽器。無頭瀏覽器的環境中,以流行的Web瀏覽器」

這裏提供一個網頁 的自動化控制類似我找到了一個很好的例子,它可以適合你繼續前進:https://www.r-bloggers.com/web-scraping-javascript-rendered-sites/

此外,您還可以檢查這篇文章,關於爲Angularjs供電網站的搜索引擎優化,在「吐出HTML頁面」下你可以找到有用的信息:https://www.yearofmoo.com/2012/11/angularjs-and-seo.html#sptting-out-the-html-pages

+0

謝謝你。我剛剛在一段時間之前使用過phantomjs。我實際上最終使用了噩夢包https://www.npmjs.com/package/nightmare – Notmfb

+0

是的,在我看來也是一樣。應該類似於phantom.js。 –

相關問題