我尝试使用PhantomJs
'http://www.forbes.com/sites/prossermarc/2016/10/14/softbanks-new-100b-tech-fund-shows-exactly-how-its-expanding-beyond-telco/#6e5027484acb'
但这是重定向到http://www.forbes.com/forbes/welcome/
所以我无法获取我想要的页面标题。
如果重定向网址为http://www.forbes.com/forbes/welcome/
但我完全停止了网页加载并且phantomjs
失败,我尝试中止请求。
page.onResourceRequested = function(requestData, networkRequest) {
if (requestData.url.split('?')[0] === 'http://www.forbes.com/forbes/welcome/') {
networkRequest.abort();
}
};
无论如何,我可以停止此重定向并加载原始网址吗?
答案 0 :(得分:1)
无论如何,我可以停止此重定向并加载原始网址吗?
不,因为它是在服务器级别完成的(标题重定向)。
但你可以点击"继续阅读文章"按钮或等到forbes.com在5秒左右后自动将您重定向到文章。
我将展示如何等待:
var page = require('webpage').create();
page.viewportSize = { width: 1440, height: 900 };
page.settings.userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36";
// This callback is run every time a page is done loading.
// The first time it is the welcome page, the second time it's the target page.
page.onLoadFinished = function(){
// Let's get the URL of current page
var url = page.evaluate(function(){
return document.location.href;
});
console.log(url);
// Is it the welcome page? No
if(url.indexOf("forbes/welcome") == -1)
{
setTimeout(function(){
page.render("forbes-article.png");
var title = page.evaluate(function(){
return document.querySelector("h1.article-headline").innerText;
});
console.log(title);
phantom.exit();
}, 1000);
}
// Yes it is the welcome page, let's just wait
else
{
console.log("redirected to welcome screen, waiting");
page.render("forbes-welcome.png");
}
};
page.open("http://www.forbes.com/sites/prossermarc/2016/10/14/softbanks-new-100b-tech-fund-shows-exactly-how-its-expanding-beyond-telco/#6e5027484acb");
答案 1 :(得分:1)
无论如何,我可以停止此重定向并加载原始网址吗?
是的,尝试设置其他用户代理:
page.settings.userAgent = "myAppBot"; // or simply 'bot'.
福布斯肯定没有重定向机器人,我猜它只会向普通浏览器用户代理商展示广告。