Вход

Просмотр полной версии : Парсинг dotabuff


Ver1ty
08.07.2016, 19:50
Пытаюсь парсить 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
Попробовал вернуть только не пустые элементы. Вот, что выдало: http://s48.radikal.ru/i119/1607/a0/5b14e8d18d31.png