Skip to content

Instantly share code, notes, and snippets.

@makssof
Last active February 22, 2019 15:16
Show Gist options
  • Save makssof/28da8467d69c51e39d77b787112fe2e6 to your computer and use it in GitHub Desktop.
Save makssof/28da8467d69c51e39d77b787112fe2e6 to your computer and use it in GitHub Desktop.
Parse all VK articles | Спарсить вк все статьи на странице закладок
function findFirstChildByClass(element, className) {
var foundElement = null, found;
function recurse(element, className, found) {
for (var i = 0; i < element.childNodes.length && !found; i++) {
var el = element.childNodes[i];
var classes = el.className != undefined? el.className.split(" ") : [];
for (var j = 0, jl = classes.length; j < jl; j++) {
if (classes[j] == className) {
found = true;
foundElement = element.childNodes[i];
break;
}
}
if(found)
break;
recurse(element.childNodes[i], className, found);
}
}
recurse(element, className, false);
return foundElement;
}
// [{ "name": "...", "url": "...", "image": "..."}, ...]
function parseArticles(){
var res = [];
var els = document.getElementsByClassName("bookmarks_row_type_article");
for(var i = 0; i < els.length; i++){
var c = findFirstChildByClass(els[i], "bookmark_link__title");
res[i] = {};
res[i].title = c.innerText;
res[i].url = c.href;
var c = findFirstChildByClass(els[i], "bookmark_link__image");
res[i].image = c.style.backgroundImage;
res[i].image = res[i].image.substr(5, res[i].image.length - 7);
}
return JSON.stringify(res);
}
console.log(parseArticles());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment