2017-09-29 56 views
0

我遇到了一個挑戰,似乎無法在網絡上的任何地方找到答案。我正在做一個個人項目;它是一個Node.js應用程序,它使用請求和cheerio包命中一個終點並且刮掉一些數據......但是,終端是Facebook頁面......並且其內容的顯示取決於用戶是登錄或不。從Facebook刮臉

總之,應用程序試圖刮掉用戶保存的鏈接,你知道,所有的東西添加到您「保存後」,但實際上從未回(至少在我的情況)。那麼,終點是htpps://www.facebook.com/saved。如果在您的瀏覽器中登錄Facebook,那麼單擊該鏈接將會將您帶到應用程序需要的位置。然而,由於應用程序在技術上並不通過有憑據和會話保存在瀏覽器中去,我運行到一個有點問題......

是,使用請求模塊我能成功地到達Facebook的「一部分」,但不是我需要的那一部分......我的問題確實是:我該如何開始處理這一挑戰?

這是所有的代碼,我對應用至今:

var express = require('express'); 
var fs = require('fs'); 
var request = require('request'); 
var cheerio = require('cheerio'); 
var app = express(); 

app.get('/scrape', (req, res) => { 
    // Workspace 
    var url = 'https://www.facebook.com/saved'; 
    request(url, (err, response, html) => { 
    if (err) console.log(err); 
    res.send(JSON.stringify(html)); 
    }) 

}) 

app.listen('8081',() => { 
    console.log('App listening on port 8081'); 
}) 

任何投入,將不勝感激。目前,我保留...! 我怎麼可能用用戶提供的憑證(安全地)來打這個端點,以便應用程序可以合法地通過認證並達到期望的終點?

+0

你爲什麼不使用Facebook API? https://developers.facebook.com/你將永遠無法贏得與Facebook的爭奪,從而刮掉他們的數據。 API是免費的(在合理範圍內)。 – neuromatter

+0

我查看了他們的API,但它不允許我想要完成的功能......它似乎在不久的將來可以在某個時間點使用,但現在已經消失了:\ – JaySeeCode

回答

0

我不認爲你可以完成使用request-cheerio模塊,因爲你需要使用你的登錄信息發出一個請求。

無頭瀏覽器更適合這種類型的項目,如果你想它是一個刮板。嘗試使用casperJsPhantomJs。它會給你更多的靈活性,但它不是一個node.js模塊,所以如果你想將它與express結合,你需要更進一步。

一個nodeJs模塊我知道可以讓你發帖的是Osmosis。如果你可以讓.login(user,pw)工作,那麼這會很棒,但我認爲它不能成功登錄Facebook。

API如果可能會是一個更好的解決方案,但我假設你已經查找它並找到你所尋找的東西。

我個人的選擇是使用RobotProcessAutomation。舉例來說,WinAutomation是處理網頁和刮取的好工具。這是一種全新的不同方法,但與編程編碼相比,它可以很好地完成這項工作,並且可以更快地實施。