首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chrome显示不同的html,然后是我的RequestJS & CheerioJS应用程序

Chrome显示不同的html,然后是我的RequestJS & CheerioJS应用程序
EN

Stack Overflow用户
提问于 2013-09-28 23:30:05
回答 1查看 122关注 0票数 0

我的刮板应用程序正在搜索一个Vimeo URL,它附带了一个查询字符串,它是

'http://vimeo.com/search?q=angularjs'

当我在Chrome上加载这个URL时,我可以看到一些元素没有显示在我的request()中,这个URL来自我的刮板。我可以用Chrome和刮板加载的HTML似乎是静态元素,比如在导航栏和页脚中找到的HTML。当我试图访问Vimeo处理查询字符串search?q=angularjs所生成的任何元素时,我的刮板将无法访问显示在Chrome中的视频库网格。到目前为止,这是我的刮刀:

代码语言:javascript
复制
var request = require('request'),
  cheerio = require('cheerio'),
  searchURL = 'http://vimeo.com/search?q=angularjs';

request(searchURL, function(err, resp, body){
  if(err)
    throw err;
  $ = cheerio.load(body);
  console.log($('#site_header .join a').text());
  console.log($('#page_header h1').text());
  $('#browse_content .browse_videos li a').each(function(){
    console.log(this.attr('href'));
  });
});

在使用Cheerio将身体加载到$之后,我运行

console.log($('#site_header .join a').text());

它将Join记录到控制台。这是可行的。太棒了。但如果我做了

console.log($('#page_header h1').text());

登录到控制台的是Please Try Again,我认为这意味着查询无法完成。当我在Chrome页面中看到HTML的时候,我会看到:

代码语言:javascript
复制
<header id="page_header">
    <h1>Search videos for <mark class="txt_normal">angularjs</mark></h1>
</header>

为了确定我跑了

console.log($('html').html());

这会让我返回一个browse_content页面,该页面缺少包含视频缩略图库网格的HTML。这就是为什么以下代码不返回任何内容的原因:

代码语言:javascript
复制
$('#browse_content .browse_videos li a').each(function(){
  console.log(this.attr('href'));
});

所以为什么Vimeo不想给我的刮刀它请求的内容?

EN

回答 1

Stack Overflow用户

发布于 2013-12-21 19:37:30

在不深入了解示例细节的情况下,我怀疑您需要使用类似http://phantomjs.org/的方法来解析Vimeo站点上的javascript。Phantom.js将返回一个对象,您可以像往常一样在该对象上应用cheerio方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19072793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档