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

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

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

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

编辑:解决方案

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 = $('
').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);

它在很大程度上取决于有问题的页面是如何构建的。

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

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

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


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