2017-04-01 5 views
0

Ich versuche eine Webseite in Node.js zu scrappen.Maximale Umleitungen überschreiten, wenn versucht wird, eine Webseite zu scrappen?

var request = require('request').defaults({maxRedirects:3}); 


let url = "https://webapp4.asu.edu/catalog/classlist?k=81684&t=2177&e=all&hon=F&promod=F" 
// , qs:propertiesObject 
request({url:url}, function(err, response, body) { 
    if(err) { console.log(err); return; } 
    console.log("Get response: " + response.statusCode); 
}); 

Ich bekomme maximale Anzahl von Weiterleitungen aus irgendeinem Grund. Ich kann eine Anfrage bekommen in postman und ich kann die Seite ganz gut besuchen. Was würde ich tun, um Weiterleitungen zu verursachen?

+0

Warum übergeben Sie die gleichen Abfrageparameter in propertiesObject, die in Ihrer URL gefunden werden? Die meiste Zeit haben Sie eine URL wie "https://webapp4.asu.edu/catalog/classlist" und dann werden Sie ein Abfrageobjekt übergeben, das so etwas wie {k: '81684', t: '2177', e: "alle", hon: "F", promod: "F"}. – user2263572

+0

Sorry, das war ein Tippfehler. Ich hatte das nicht in der Anfrage. –

+0

Und haben Sie versucht, ".defaults ({maxRedirects: 3}) zu entfernen;" und verändert das das Ergebnis? Ich glaube, der Standard der Anfrage ist 10, und abhängig von der Seite, die Sie versuchen zu sehen 3 möglicherweise zu niedrig. – user2263572

Antwort

1

Beste Praxis: Sie sollten immer nach einer robots.txt-Datei suchen, bevor Sie eine Webseite scrapen. Ich konnte keinen für diese bestimmte Website finden, aber wenn Sie auf eine Website stoßen, die kein Scraping zulässt, sollten Sie alle Regeln befolgen.

Das scheint, als ob Ihr Scraper in einer unendlichen Redirect-Schleife wegen der fehlenden Header auf der ausgehenden Anfrage stecken bleibt.

So etwas wie das Folgende erhalten Sie eine Antwort, aber Sie müssen bestimmen, welche Analyse durchgeführt werden muss, um Informationen daraus zu extrahieren.

var request = require('request'); 

var options = { 
    url: 'https://webapp4.asu.edu/catalog/classlist?k=81684&t=2177&e=all&hon=F&promod=F', 
    headers: { 
    "method":"GET", 
    "path":"/catalog/classlist?k=math&t=2177&e=all&hon=F&promod=F", 
    "scheme":"https", 
    "accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", 
    "accept-encoding":"gzip, deflate, sdch, br", 
    "accept-language":"en-US,en;q=0.8", 
    "cache-control":"no-cache", 
    "cookie":"JSESSIONID=javaprod19~413DF4150236B1466C8ECB85EB796C06.catalog19; onlineCampusSelection=C; __cfduid=d5e9cb96f2485f7500fec2116ee8f23381491087061; __utma=59190898.1874896314.1491088625.1491088625.1491088625.1; __utmb=59190898.2.10.1491088625; __utmc=59190898; __utmz=59190898.1491088625.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=137925942.2000995260.1491087063.1491087063.1491088718.2; __utmb=137925942.2.10.1491088718; __utmc=137925942; __utmz=137925942.1491088718.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); ADRUM=s=1491089349546&r=https%3A%2F%2Fwebapp4.asu.edu%2Fcatalog%2Fclasslist%3F-1275642430", 
    "pragma":"no-cache", 
    "referer":"https://webapp4.asu.edu/catalog/", 
    "upgrade-insecure-requests":"1", 
    "user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36" 
    } 
}; 

function callback(error, response, body) { 

    console.log(response.body) 

} 
request(options, callback); 
+0

Interessant .. Ist es möglich, dies irgendwie zu beschleunigen? Eine Anwendung wie Postbote ruft die Daten sofort ab. Ich erhöhte maximale Redirects auf 1200, habe noch keine Ergebnisse erhalten, –

+0

Update: 1200 ausgegeben "maximale Umleitungen überschritten" –

+0

Siehe meine aktualisierte Antwort. – user2263572

Verwandte Themen