我对 Javascript 和编程相当陌生,一直在尝试制作一个 chrome 扩展来监控用户在特定网站上查看的任何产品的价格,并在价格发生变化时通知用户。我正在抓取 DOM 来获取价格。 我希望扩展程序每 5 小时访问一次页面并抓取 DOM 并更新价格。
我认为可以帮助我做到这一点的两种方法是使用 PhantomJs或者让我的扩展程序使用保存的 URL 打开一个新选项卡,运行脚本来抓取并立即关闭它。
如何采用新标签方式或 Phantom 方式进行操作?
我尝试过 window.open(url, '_blank') 并设置超时但没有帮助。 尝试使用 iframe 但无法访问框架中的文档。
如果我没有遵守提问准则,请原谅。这是我的第一次。
最佳答案
假设内容不是动态加载的,我认为您不必打开新选项卡来执行此操作。我只需发出一个 HTTP get 请求来接收要抓取的页面的 HTML。这可以使用纯 JavaScript 来完成
function httpGet(theUrl)
{
var xmlHttp = null;
xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false );
xmlHttp.send( null );
return xmlHttp.responseText;
}
或者使用 jQuery
$.get(
"somepage.php",
{paramOne : 1, paramX : 'abc'},
function(data) {
alert('page content: ' + data);
}
);
收到回复后,您可以使用 jQuery.parseHTML或者类似的东西,将其转换为 DOM 节点数组,您可以根据需要进行抓取。
关于javascript - 如何打开新选项卡并在新选项卡上运行脚本后立即关闭它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24937616/