我使用node.js,我希望得到这个http://myanimelist.net/includes/ajax.inc.php?t=64&id=1
页面并获取我需要的一些数据。我无法用cheerio制作它,因为我之前从未遇到过这样的页面。如果有人告诉我如何解析这些页面以及哪个节点模块使用它,我会感到高兴,因为我无法通过谷歌找出它,但是我知道它应该很简单并且我&#39我只是问愚蠢的问题。
答案 0 :(得分:0)
这里,是通过我的代码从html输出中提取的简单输出。
{
"description": "In the year 2071, humanity has colonized several of the planets and moons of the solar system leaving the now uninhabitable surface of planet Earth behind. The Inter Solar System Police attempts to ke...",
"genres": "Action, Adventure, Comedy, Drama, Sci-Fi, Space",
"status": "Finished Airing",
"type": "TV",
"episodes": "26",
"score": "8.83",
"ranked": "#22",
"popularity": "#31",
"members": "419,197"
}
下面是从页面中提取信息并将其保存在对象(键:值)对中的代码(即,如上所述);
var $body = $('body');
$('div').children().empty();
var description = $('div').text().trim();
var keys = $('body span').text().split(':');
keys.splice(-1, 1);
$body.children().empty();
var values = $body.text().trim().split('\n');
var result = {
description: description
};
for(var j = 0; j<keys.length; j++) {
result[(keys[j].toLowerCase().trim())] = (values[j].trim());
}
console.log('result', result);
要测试上述代码,您需要打开http://myanimelist.net/includes/ajax.inc.php?t=64&id=1并将上述脚本粘贴到开发工具检查器中 - &gt;安慰。当你运行代码时,它会抛出结果,因为jquery没有找到页面,所以通过以下链接手动将jquery添加到你的脚本中:https://stackoverflow.com/a/7474394/5228251
您需要使用{^ 1}代码来解析页面。
安装模块;
cheerio
使用此脚本;
$ npm install request --save
$ npm install cheerio --save
用法:
var cheerio = require('cheerio'),
request = require('request');
function scrapePage(callback) {
var result = null;
var url = 'http://myanimelist.net/includes/ajax.inc.php?t=64&id=1';
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
// console.log(body) // Show the HTML for the Page URL.
var $ = cheerio.load('<body>' + body + '</body>');
var $body = $('body');
$('body div').children().empty();
var description = $('body div').text().trim();
var keys = $('body span').text().split(':');
keys.splice(-1, 1);
$body.children().empty();
var values = $body.text().trim().split('\n');
result = {
description: description
};
for(var j = 0; j<keys.length; j++) {
result[(keys[j].toLowerCase().trim())] = (values[j].trim());
}
}
callback(result);
});
}
希望这有帮助。