2017-06-25 63 views
2

我想通過REST API構建Python/JS Web服務。Python或基於JS的REST API用於Web抓取

我的情況如下:在我的網站上的一個按鈕

  1. 用戶點擊
  2. 我的網站發送一個HTTP請求到REST API
  3. 網頁抓取發生在服務器端(使用Python或Node)。第三方網站上的數據動態加載
  4. 結果以JSON格式發送回我的網站被顯示給用戶

我查了一些Python的託管服務。我不知道他們是否支持硒。 JS庫和NodeJS主機也一樣。

基本上,我很困惑。我應該如何使用我的項目並抓取動態數據? Python與硒?有PhantomJS和Cheerio的NodeJS?

回答

1

Selenium(獨自)和CheerIO都不會讓您能夠從第三方網站動態加載數據。

您正在尋找的答案是PhantomJs。 使用PhantomJS允許您從第三方網站動態加載數據並使用Javascript與其進行交互,您可以執行諸如向下滾動以請求更多數據以及添加新內容時開始報廢等操作。

我自己在similar project上工作過。我在通過Javascript與頁面交互時從Facebook上獲取數據,並在一系列交互之後廢棄數據以加載我需要刪除的所有數據,然後將所有這些數據保存到XML文件中,以便稍後將其存儲在OrientDB數據庫中。 在這個項目中,我使用了Selenium和PhantomJS驅動程序,但PhantomJS已經是NodeJs框架,但是我使用了Python,因爲這個項目預計會更大並且包含更多的數據科學內容。

就你而言,如果場景只是抓取數據,然後將其檢索到遠程主機/客戶端,那麼我向你推薦Node + PhantomJS。

+0

@Ahmad,謝謝你的回答。你是對的。我必須具體。我在項目中已經使用PhantomJS(節點騎士)和Cheerio,但我也認爲可擴展性對我來說是最大的混亂。 JS現在應該可以正常工作,但爲什麼你認爲Python解決方案可以更好地擴展? (我應該考慮長期)。另外,作爲另一個問題,網站可以輕鬆檢測瀏覽器。在Phantom的情況下,我看到了不受支持的瀏覽器消息(通過截圖)。你有沒有聽說幻影的任何問題(在被網站封鎖的情況下)? –

+0

這不是關於Python解決方案的縮放比較好,這是關於JavaScript解決方案可能會非常快速地搞亂,除了節點js還很年輕,它沒有像numpy和pandas這樣的庫,這是我在開發數據時考慮的-科學項目。沒有我沒有聽說Phantom的問題,但是您的網站可能會使用某些瀏覽器不支持的javascript功能,在這種情況下,我建議** chromedriver **,因爲幾乎所有網站都支持Chrome。但是你將不得不面對在頁面內執行腳本的問題。 –