【发布时间】:2016-08-11 03:12:36
【问题描述】:
大家好,女士们,首先这是我在 stackoverflow 中的第一个问题,所以不要对我这么苛刻.. 但是 w/e :P。 我有个问题.. 我对网络抓取完全陌生,目前我遇到的问题是我无法选择正确的元素。我的代码如下所示:
var express = require('express');
var path = require('path');
var request = require('request');
var cheerio = require('cheerio');
var fs = require('fs');
var app = express();
var port = 8000;
var url = "http://www.finanzparasiten.de/html/links/awd.html";
request(url, function (err, resp, body) {
if(!err) {
var $ = cheerio.load(body)
var test = $('body table table table > tbody > tr > td > p');
console.log(test.html())
test.each(function (ii, asdf) {
var rr = $(asdf).find("table").find("tr").first().find('td:nth-child(2)').text();
console.log(asdf);
})
} else {
console.log("we encountered an error: " + err);
}
});
app.listen(port);
console.log('server is listening on ' + port);
它不断为变量 test 记录 NULL。 似乎cheerio 的 > 选择器有问题。使用 jQuery,此选择将按预期工作。
感谢@logol 的anwser,我可以解决第一个问题,但现在我面临的问题是我必须在 body 之后选择直接子代,并且它似乎是错误的 tbody.. any1 有解决方法吗?
【问题讨论】:
标签: javascript jquery web-scraping request cheerio