用cheerio刮擦温度和湿度

时间:2014-07-02 11:58:38

标签: javascript web-scraping cheerio

我一直在尝试使用 cheerio 废弃以下网页,以获得我的一个小项目的最新温度和湿度费率: Website link

不幸的是,似乎我必须深入挖掘很多标签,而我无法找到自己的方式。我试图检查元素以查看其css路径,但它没有用。 我尝试的代码如下(它是基于我检查元素时获得的css选择器):

setInterval(function getTempAndHumidity() 
{
    var url = 
    {
        url: "http://www.meteociel.fr/temps-reel/obs_villes.php?code2=7630",
        method: 'GET',
        proxy: webproxy
    };

    request(url, function (error, response, body) 
    {
        if (!error && response.statusCode == 200) 
        {
            $ = cheerio.load(body);           
            console.log($('tr.texte > td:nth-child(2) > table:nth-child(2) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > table:nth-child(1) > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) > center:nth-child(18) > table:nth-child(3) > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(5) > div:nth-child(1)').html());
        }
        else
        {
            console.log("Error when getting the temperature and humidity rate: " + error);
        }
    })
}, 2000);

我只是得到了' null'所以它似乎不起作用。

如果有人能帮我解决这个问题,那将是一个巨大的帮助!

提前致谢

1 个答案:

答案 0 :(得分:0)

所以我找到了解决问题的方法。但它非常丑陋。我想找到一种更优雅的方式来做到这一点!

$ = cheerio.load(body);
var content = $('h1').parent().nextAll().nextAll().next().text();
var catch_values = content.match(/.*km\s+(\d+\.\d+).*(\d\d)%.*/);
var temp = catch_values[1];
var humid_rate = catch_values[2];

欢迎任何帮助,建议或意见!