Парсинг dotabuff
Пытаюсь парсить dotabuff.com вот код
var request = require("request"), cheerio = require("cheerio"), url = "http://www.dotabuff.com/players/106368474"; request(url, function (error, response, body) { if (!error) { var $ = cheerio.load(body), res = $(".header-content-title h1").html(); console.log(res); } else { console.log("Произошла ошибка: " + error); } }); с данного сайта всегда возвращает null. Если же беру text(), то пустая строка. на других сайтах работает |
Посмотри, чему равно body (строка), которое загрузилась, есть ли там элемент, соответствующий такому селектору. Такого элемента может не оказаться по массе причин.
|
Да, чирио конечно крутая штука, но она парсит весь хтмл и строит по нему полное дерево ДОМ. Если надо взять 2-3 небольших кусочка, то, наверно, лучше регексы.
|
{ options:
{ withDomLvl1: true, normalizeWhitespace: false, xmlMode: false, decodeEntities: true }, _root: { '0': { type: 'root', name: 'root', attribs: {}, children: [Object], next: null, prev: null, parent: null }, options: { withDomLvl1: true, normalizeWhitespace: false, xmlMode: false, decodeEntities: true }, length: 1, _root: [Circular] }, length: 0, prevObject: { '0': { type: 'root', name: 'root', attribs: {}, children: [Object], next: null, prev: null, parent: null }, options: { withDomLvl1: true, normalizeWhitespace: false, xmlMode: false, decodeEntities: true }, length: 1, _root: [Circular] } } вот, что возвращеат body |
Попробовал вернуть только не пустые элементы. Вот, что выдало:
![]() |
Часовой пояс GMT +3, время: 04:49. |