【问题标题】: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' ]

【讨论】:

    猜你喜欢
    • 2022-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 2016-11-28
    相关资源
    最近更新 更多