网页搜索NBA.com

时间:2016-05-08 03:05:33

标签: node.js web screen-scraping cheerio

我正在尝试在http://www.nba.com/gameline/20160507/处找到此标记处的文字

 <h4 class="nbaModTopTeamNum  win">95</h4> 

我正在使用NodeJS和Cheerio但每次我在console.log上都会得到$ .text()我得到一个空行。 这是我的代码:

 1 var request = require('request');
 2 var cheerio = require('cheerio');                                             
 3 var fs = require('fs');                                                       
 4 request('http://www.nba.com/gameline/20160507/', function(err, res,html){     
 5    if(!err && res.statusCode == 200){                                        
 6                                                                              
 7         var $ = cheerio.load(html);                                           
 8         var score = $('h4.nbaModTopTeamNum.win');                             
 9         console.log(score.text());                                            
 10    }                                                                         
 11    else console.log('Error reaching  host');                                  
 12});

2 个答案:

答案 0 :(得分:1)

在您指定的网址的原始HTML源代码中,与您的选择器匹配的<div>为空。它在原始HTML源中没有任何内容。您可以加载该URL,然后在该页面上执行查看/来源,并查看是否属于这种情况。

所以,显然这个div的内容是由在页面中运行的Javascript填充的,其中cheerio可能无法运行。因此,由于您只看到原始来自服务器的原始HTML源代码,因此您没有获得任何内容。

答案 1 :(得分:1)

您应该尝试将phantomJS用于节点,这样您就可以模拟CLI浏览器并使其加载页面,然后您可以使用cheerio来抓取信息......显然,这就是问题所在。这是一些phantomJS示例,因此您可以继续尝试:PhantomJS Scraping example