我正在使用请求模块从网站列表中获取数据,然后使用jsdom获取DOM并执行一些操作。
有些网站正在返回奇怪的内容(不是html)。
然后将此图像中的数据传递给jsdom以获取DOM,但它传递了此错误:
TypeError: Cannot read property '$' of undefined
我不确定为什么会发生这种情况,我查看了网站,它生成的HTML并不是截图中的乱码!!
CODE:
request({
uri: linkTarget,
method: "GET",
timeout: 120000,
followRedirect: true,
maxRedirects: 5
}, function(error, response, html){
if (!error) {
jsdom.env(html,
["http://code.jquery.com/jquery.js"],
function (errors, window) {
var $ = window.$; // Getting Dom
linkHtml = "";
$('body script').remove();
$('body *').each(function() {
if($(this).text() !== " "){
linkHtml = linkHtml+$(this).text();
}
});
答案 0 :(得分:1)
内容以gzip状态返回。 Use zlib
to unzip it:
var zlib = require('zlib')
, request = require('request');
request(params, function (err, res, buffer) {
if (err) { error(err); }
zlib.gunzip(buffer, function (err, unzipped) {
var result = unzipped.toString();
try {
result = JSON.parse(result);
cb(result);
}
catch (e) {
error(e);
}
});
});