我的爬虫应用程序正在搜索一个带有查询字符串的 Vimeo URL,它是
'http://vimeo.com/search?q=angularjs'
当我在 Chrome 上加载该 URL 时,我可以从我的抓取工具中看到许多没有与我request()
的 URL 一起显示的元素。我可以使用 Chrome 和我的爬虫加载的 HTML 似乎是静态元素,例如导航栏和页脚中的 HTML。当我尝试访问由 Vimeo 处理查询字符串生成的任何元素时search?q=angularjs
,我的抓取工具无法访问 Chrome 中显示的视频库网格。所以到目前为止,这是我的刮刀:
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 时,我看到:
<header id="page_header">
<h1>Search videos for <mark class="txt_normal">angularjs</mark></h1>
</header>
为了确定我跑了
console.log($('html').html());
这让我回想起一个缺少browse_content
包含视频缩略图画廊网格的 div 的 HTML 页面。这就是为什么下面的代码什么也不返回的原因:
$('#browse_content .browse_videos li a').each(function(){
console.log(this.attr('href'));
});
那么为什么 Vimeo 不想给我的爬虫提供它所请求的内容呢?