2016-04-23 3 views
0

Also, im Grunde, was ich mache Scraping einer Webseite, alle gewünschten Daten bekommen und es auf einer Webseite auf meiner Website anzeigen. Wenn ich diese spezifische Seite scrappe, brauche ich den Link innerhalb des 'href' Tags. Diese spezielle Site verwendet jedoch keine regulären Links. Innerhalb des "href" -Tags befindet sich eine Abfragezeichenfolge. Mein Plan war, zu nehmen, was innerhalb der "href" war und eine URL zu erstellen, um meine nächste Anfrage zu machen, aber jetzt, wenn ich versuche, die Abfragezeichenkette in die URL zu geben, kann ich nicht in Knoten über req.paramsÜbergeben einer Abfragezeichenfolge an eine Anfrage als eine tatsächliche Zeichenfolge mit Knoten und Express

zugreifen

Ich möchte wissen, ob es eine Möglichkeit gibt, vielleicht eine Abfragezeichenfolge zu übergeben, ohne dass der Server denkt, dass es eine Abfragezeichenfolge ist, oder muss ich req.query verwenden, um alle Parameter zu übernehmen und die URL von Grund auf neu zu erstellen?

Hier sind einige Beispiele von dem, was ich rede:

page1.ejs:

<a href="/display/<%= some.href %>"></a> 

some.href = "Variable = bleh?"

Serverseitige Handhabung:

app.get('/display/:string', function(req, res) { 
    var url = "http://theurlineed.com/" + req.params.string; 
}); 

Dieser Code funktioniert nicht. Wenn ich auf dem Link klicken, um es mir sagt, es könnte nicht erhalten/Anzeige/variable = bleh

Antwort

1

Sie müssen den Query-String kodieren, so dass es nicht wie ein Query-String in der URL behandelt wird:

some.href = encodeURIComponent("?variable=bleh"); 

Also dann ist Ihre URL: /display/%3Fvariable%3Dbleh. Wie in den Kommentaren erwähnt, wird Express automatisch den Wert in req.params.string dekodieren, so wird es der richtige Wert sein.

+0

Ich werde das jetzt versuchen. – Popatop15

+0

Aha! Es funktionierte. Vielen vielen Dank! +1 Btw, Express hat es automatisch entschlüsselt. Es verwandelte es in einen langen String in der URL-Leiste, aber auf der Serverseite, wenn ich den Parameter protokollierte, war es wie es sein musste. – Popatop15

+0

Super! Vergessen Sie nicht, meine Antwort als die richtige Antwort zu markieren :) – NathanW

Verwandte Themen