有问题的网页:
http://watch2gether.com/go#<link>
我需要能够在完全加载并重定向到最终目的地后抓取此页面。
现在,详细说明我的问题: 我一直在使用请求和cheerio试图刮掉页面,我已经成功了:
var searchTerm = 'https://www.youtube.com/watch?v=link';
var url = 'https://www.watch2gether.com/go#' + searchTerm;
request(url, function(err, resp, body){
$ = cheerio.load(body);
links = $('link'); //use your CSS selector here
$(links).each(function(i, link){
sleep.sleep(2);
console.log($(link).text() + ':\n ' + $(link).attr('href'));
});
});
但是,它会在页面实际加载并重定向到最终页面之前返回每个href属性的值,因此它实际上是在抓取http://watch2gether.com/go#而不是http://watch2gether.com/rooms/
因为第二页只在第一页被请求后加载,我怎么能让我的代码刮掉第二页而不是第一页呢?
答案 0 :(得分:0)
因为第二页只在第一页被请求后加载,我怎么能让我的代码刮掉第二页而不是第一页呢?
我并不完全理解你问题的这一部分。但是,我认为您遇到的是javascript的异步特性。
当你这样做时
$(links).each(function(i,link){ //你的附加代码在这里 })
javascript的异步性质根据$(&#39; links&#39;)上的CSS选择器获取所有链接。加载完所有链接后,它会开始执行其余代码,并相应地重定向/执行操作。
请检查事件循环或javascript的异步性。