Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Парсинг dotabuff (https://javascript.ru/forum/node-js-io-js/63929-parsing-dotabuff.html)

Ver1ty 08.07.2016 19:50

Парсинг 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(), то пустая строка. на других сайтах работает

Яростный Меч 08.07.2016 23:03

Посмотри, чему равно body (строка), которое загрузилась, есть ли там элемент, соответствующий такому селектору. Такого элемента может не оказаться по массе причин.

Яростный Меч 08.07.2016 23:10

Да, чирио конечно крутая штука, но она парсит весь хтмл и строит по нему полное дерево ДОМ. Если надо взять 2-3 небольших кусочка, то, наверно, лучше регексы.

Ver1ty 12.07.2016 12:21

{ 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

Ver1ty 16.07.2016 07:47

Попробовал вернуть только не пустые элементы. Вот, что выдало:


Часовой пояс GMT +3, время: 04:49.