2016-05-17 12 views
3

私の大学のウェブサイト(moodle)をnode.jsで削りたいが、ヘッドレスブラウザが見つかりませんでした。私はPythonでRoboBrowserを使ってわずか10行のコードでこれを行っています:node.jsで認証されたウェブサイトを掻き立てる

from robobrowser import RoboBrowser 
url = "https://cas.upc.edu/login?service=https%3A%2F%2Fatenea.upc.edu%2Fmoodle%2Flogin%2Findex.php%3FauthCAS%3DCAS" 
browser = RoboBrowser() 
browser.open(url) 
form = browser.get_form() 
form['username'] = 'myUserName' 
form['password'] = 'myPassword' 
browser.submit_form(form) 
browser.open("http://atenea.upc.edu/moodle/") 
print browser.parsed 

問題はウェブサイトが認証を必要とすることです。手伝って頂けますか?ありがとう!

PD:これは役に立ちますhttps://www.npmjs.com/package/form-scraperしかし、私はそれを働かせることはできません。

+0

http://casperjs.org/ – robertklep

答えて

0

第三者のウェブサイトを読んで、特定の情報を「掻き集める」と仮定した場合、cheerioなどのライブラリを使用してNodeでこれを実現できます。

Cheerioは、"サーバー向けに特別に設計されたコアjQueryのリーンな実装"です。つまり、DOM(またはその一部)のString表現が与えられれば、cheerioはjQueryと同じようにそれをトラバースできます。

example from Max Ogdenでは、リモートサーバーからHTMLを取得し、その後、cheerioにそれを渡すためにrequestモジュールを使用する方法を示しています。おかげで

var $ = require('cheerio') 
var request = require('request') 

function gotHTML(err, resp, html) { 
    if (err) return console.error(err) 
    var parsedHTML = $.load(html) 
    // get all img tags and loop over them 
    var imageURLs = [] 
    parsedHTML('a').map(function(i, link) { 
    var href = $(link).attr('href') 
    if (!href.match('.png')) return 
    imageURLs.push(domain + href) 
    }) 
} 

var domain = 'http://substack.net/images/' 
request(domain, gotHTML) 
+0

が、私はすでに方法を知っていますjsの公開Webサイトを掻き集めるには、認証が必要なページを掻きたいという問題があります。 –

+0

あなたの質問にそのことを説明してみませんか? – duncanhall

+0

私はそれについて説明しませんが、それはPythonコードではっきりと見えます。 –

関連する問題