如何抓取禁用了Chrome DevTools的网站?
我使用Puppeteer尝试使用其各自的CSS选择器来获取特定航空公司的出发和到达时间,但是由于DevTool被禁用,因此并未成功。
经过一番检查,类似于Facebook所做的,我发现该网站禁用了DevTools,Puppeteer控制浏览器的协议。我似乎无法在控制台中运行任何有效的JavaScript函数。
请问,有什么方法可以抓取这样的网站?
更新
事实证明,该站点加载了此JavaScript函数,在此以下,这限制了我在控制台中运行任何有效JavaScript代码的能力。
function preventAction(a) {
a.preventDefault();
return false
}
jQuery(function() {
$(document).on("paste", "input", preventAction);
$(document).on("drop", "input", preventAction);
$("html").css({
userSelect: "none"
})
});
$(function() {
var c = 0;
function b() {
if (!c) {
setTimeout(function() {
console.warn("%cYou are not allowed to use developer tools in Production mode!", "font: 2em sans-serif; color: yellow; background-color: red;")
}, 1);
c = 1
}
throw "Console is disabled!"
}
var a, d = {
set: function(e) {
a = e
},
get: function() {
b();
return a
}
};
console.log("2016 Hitit Computer Services");
console.warn("%cYou are not allowed to use developer tools in Production mode!", "font: 2em sans-serif; color: #fefefe; background-color: #B5121B; padding: 4px;");
Object.defineProperty(console, "_commandLineAPI", d);
Object.defineProperty(console, "__commandLineAPI", d);
Object.defineProperty(window, "_commandLineAPI", d);
Object.defineProperty(window, "__commandLineAPI", d);
Object.defineProperty(window, "console", d)
});
反正有没有使用Puppeteer覆盖站点加载的功能Object.defineProperty(console,"_commandLineAPI",d)
的功能,所以我可以使用cheerio遍历DOM树?