2016-05-17 12 views
3

Ich möchte meine College-Website (Moodle) mit node.js kratzen, aber ich habe nicht gefunden einen kopflosen Browser dazu in der Lage. Ich habe es in Python mit RoboBrowser in nur 10 Zeilen Code getan:Scrapping authentifizierte Website in 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 

Das Problem ist, dass die Website-Authentifizierung erfordert. Kannst du mir helfen? Vielen Dank!

PD: Ich denke, das kann nützlich sein https://www.npmjs.com/package/form-scraper aber ich kann es nicht funktionieren.

+0

http://casperjs.org/ – robertklep

Antwort

0

Angenommen, Sie möchten eine Website von Drittanbietern lesen und bestimmte Informationen "abkratzen", können Sie eine Bibliothek wie cheerio verwenden, um dies in Node zu erreichen.

Cheerio ist eine "schlanke Implementierung von Core jQuery speziell für den Server entwickelt". Dies bedeutet, dass cheerio bei einer String-Repräsentation eines DOM (oder eines Teils davon) diese genauso durchlaufen kann wie jQuery.

Ein example from Max Ogden zeigen, wie Sie das request Modul verwenden können HTML von einem entfernten Server zu packen und übergeben es dann an cheerio:

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

Danke, aber ich weiß schon, wie Um eine öffentliche Website in js zu kratzen, ist das Problem, dass ich eine Seite kratzen möchte, die Authentifizierung benötigt. –

+0

Warum erklärst du das dann nicht in deiner Frage? – duncanhall

+0

Ich erkläre es nicht, aber es ist deutlich im Python-Code zu sehen. –

Verwandte Themen