我正在调用带有Node.js的Google自定义搜索来尝试。我得到的结果很好,但是当我尝试使用JSON.parse(dataFromGoogle)解析JSON时,我在许多元素上获得了非法令牌错误(html标题和片段; html标题中包含unicode转义序列,但我不确定片段有什么问题)。我可以让Google不要将html标题发回给我,但我真的需要这些片段!
是否有一个很好的解决方法,或者我是否应该计划进行一些额外的预处理以手动删除非法字符?
* * 编辑:从此
添加控制台输出使用Google搜索“小型企业”
{ “kind”:“customsearch #search”, “url”:{ “type”:“application / json”, “模板”:“https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&hr={language?}&安全= {安全?}&安培; CX = {CX 3}&安培; CREF = {CREF?}&安培;排序= {排序?}&安培;过滤器= {滤波器?}&安培; GL = {GL?}&安培; CR = {CR 1}&安培; googlehost = {googleHost?}&安培; ALT = JSON” }, “查询”:{ “下一页”: [ { “标题”:“Google自定义搜索 - 小型企业”, “totalResults”:“42300”, “searchTerms”:“小企业”, “数”:10, “startIndex”:11, “inputEncoding”:“utf8”, “outputEncoding”:“utf8”, “安全”:“关闭”, “cx”:“my_token” } ] “请求”:[ { “标题”:“Google自定义搜索 - 小型企业”, “totalResults”:“42300”, “searchTerms”:“小企业”, “数”:10, “startIndex”:1, “inputEncoding”:“utf8”, “outputEncoding”:“utf8”, “安全”:“关闭”, “cx”:“my_token” } ] }, “上下文”:{ “标题”:“IR 未定义:60 “htmlTitle”:“\ u003cb \ u003eSmall Business \ u003c / b \ u003e Health Care Tax Cre ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ SyntaxError:意外的标记ILLEGAL at Object.parse(native) 在IncomingMessage。 (/Users/pvencill/workspace/irslab/lib/searchEngine.js:44:35) 在IncomingMessage.emit(events.js:64:17) 在HTTPParser.onBody(http.js:119:42) 在CleartextStream.ondata(http.js:1213:22) 在CleartextStream._push(tls.js:291:27) 在SecurePair._cycle(tls.js:565:20) 在EncryptedStream.write(tls.js:97:13) 在Socket.ondata(stream.js:40:26) 在Socket.emit(events.js:64:17)
答案 0 :(得分:1)
var message = "";
https.get(options, function(res){
res.setEncoding('utf8');
res.on('data', function(data){
message += data;
});
res.on('end', function(){
if(callback){
var data = JSON.parse(message);
data.items = data.items || [];
callback(data);
}
});
res.on('error', function(error){
console.log("ERROR" + error.message);
});