【问题标题】:Web Scraping NBA.com网页抓取 NBA.com
【发布时间】:2016-05-08 03:05:32
【问题描述】:

我正在尝试在此标记处返回在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});

【问题讨论】:

    标签: node.js web screen-scraping cheerio


    【解决方案1】:

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

    因此,显然该 div 的内容是由页面中运行的 Javascript 填充的,而 Cheerio 可能不会运行。因此,由于您只能看到最初来自服务器的原始 HTML 源代码,因此您没有获得任何内容。

    【讨论】:

      【解决方案2】:

      你应该尝试对node使用phantomJS,这样你可以模拟一个CLI浏览器并让它加载页面,然后你可以使用cheerio来抓取信息......显然,这就是问题所在。这是一些 phantomJS 示例,您可以继续尝试:PhantomJS Scraping example

      【讨论】:

        猜你喜欢
        • 2017-07-08
        • 1970-01-01
        • 2020-06-18
        • 2017-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多