Chrome扩展程序 - 在后台从网站的单独页面获取HTML

时间:2014-12-04 09:16:08

标签: javascript jquery google-chrome google-chrome-extension

我做了一个扩展程序,它将跟踪一个人在漫画网站上阅读的漫画,并在他们的收藏页面列出他们上次阅读的章节。我最近提出了一个有用的功能,使扩展更好一点。我想让用户可以选择只能跟踪他们在网站上收藏的漫画。因此,当他们正在阅读时,扩展程序将不断检查后台是否在他们的收藏夹中,如果是,那么保存它,如果不是,请保存它。

该网站有一个收藏页面,其中包含一个人所拥有的所有漫画的列表。我希望能够在隐藏用户的背景中不断获取该页面上列出的每个漫画的名称。

所以我的问题是,有没有办法在后台获取特定页面的html,并不断获取特定数据,如某些元素的文本,以保存到数组,而无需用户实际上在收藏夹上网页?

编辑: 溶液

var barray = [];
function getbm(callback) {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function(data) {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                var data = xhr.responseText;
                callback(data);
            } else {
                callback(null);
            }
        }
    }
    var url = 'http://mangafox.me/bookmark/index.php?status=all';
    xhr.open('GET', url, true);
    xhr.send();
};
function res(data) {
    var parsed  = $.parseHTML(data);
    parsed = $('<div />').append(parsed);
    parsed.find('h2.title').each(function(){
        var bmanga = $(this).children('a.title').text();
        barray.push({"manga": bmanga});
    });
    chrome.storage.local.set({'bData': barray})
};
getbm(res);

1 个答案:

答案 0 :(得分:0)

这在很大程度上取决于相关页面的构造方式。

如果页面是静态的(HTTP响应包含您需要的数据),那么通过XMLHttpRequest抓取页面是可行的。

如果页面是动态的(最初没有数据,并且页面上的JavaScript然后查询服务器以填充它),那么XHR路由将不起作用。您可以尝试观察该页面发出的网络请求并进行复制。

值得注意的是:虽然不太可能,但请检查该网站是否有公共API。这将为您节省逆向工程工作,并让您避免自动数据抓取的灰色区域。


此外,看看您是否可以通过某种方式检查您正常跟踪的页面是否有利于该项目。它比刮另一页更容易。