2016-04-23 47 views
0

因此,基本上我正在做的是抓取网页,获取我想要的所有数据并将其显示在我网站的网页上。当抓取这个特定的页面时,我需要'href'标签内的链接。但是,此特定网站不使用常规链接。 'href'标签内部是一个查询字符串。我的计划是采取'href'内的内容并创建一个url来发出我的下一个请求,但是现在,当我尝试将查询字符串传递到url时,我无法通过节点访问它,通过req.params使用Node和Express将查询字符串作为实际字符串传递给请求

我想知道是否有一种方法可能传递查询字符串,而服务器认为它是一个查询字符串,或者我将不得不使用req.query来从头开始重新获取所有参数并构建URL?

下面是我所谈论的一些例子:

page1.ejs:

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

some.href = “变量=的Bleh?”

服务器端处理:

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

此代码不起作用。当我点击链接它告诉我它无法获取/显示/变量=的Bleh

回答

1

你需要编码的查询字符串,使其不能像在URL查询字符串处理:

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

那么你的网址将是:/display/%3Fvariable%3Dbleh。正如评论中提到的那样,Express会自动解码req.params.string中的值,所以它会是正确的值。

+0

我现在就试试这个。 – Popatop15

+0

啊哈!有效。非常非常感谢你! +1 顺便说一句,express做了自动解码。它把它变成了URL地址栏中的looong字符串,但是当我登录param时,它是它需要的。 – Popatop15

+0

太棒了!不要忘记标记我的答案为正确的答案:) – NathanW

相关问题