【问题标题】:I cannot get url from a website using nodejs我无法使用 nodejs 从网站获取 url
【发布时间】:2015-11-23 11:23:16
【问题描述】:
我希望使用下面的代码从这个网站上抓取网址:
var request = require("request");
cheerio = require("cheerio");
urls = [];
request("http://news.sabay.com.kh/topics/sport", function(err, resp, body){
if(!err && resp.statusCode ==200){
var $ = cheerio.load(body);
$(".article","h4.title").each(function(){
var url = this.attr("href");
urls.push(url);
});
console.log(urls);
}
});
但我无法得到结果。当我跑步时,我得到了这个
$ node server.js
[]
【问题讨论】:
标签:
node.js
web-crawler
scrape
【解决方案1】:
首先,使用合适的 CSS 选择器:
.article h4.title > a
然后,使用正确的字段:
var url = this.attribs.href
这给出了:
var request = require("request");
cheerio = require("cheerio");
urls = [];
request("http://news.sabay.com.kh/topics/sport", function(err, resp, body){
if(!err && resp.statusCode ==200){
var $ = cheerio.load(body);
$(".article h4.title > a").each(function(){
var url = this.attribs.href;
urls.push(url);
});
console.log(urls);
}
});
和输出:
[ 'http://news.sabay.com.kh/article/546826',
'http://news.sabay.com.kh/article/546763',
'http://news.sabay.com.kh/article/546520',
'http://news.sabay.com.kh/article/546568',
'http://news.sabay.com.kh/article/546460',
'http://news.sabay.com.kh/article/546448',
'http://news.sabay.com.kh/article/545674',
'http://news.sabay.com.kh/article/546235',
'http://news.sabay.com.kh/article/545698',
'http://news.sabay.com.kh/article/546091' ]