2017-01-01 5 views
0

Я пытаюсь очистить код, получить ссылку и текст из абзаца. Но по какой-то причине мой код не работает, я много пробовал, и каждый раз он просто дает мне возможность.Node.js web-scraping

var request = require('request'); 
var cheerio = require('cheerio'); 

request('https://bitskins.com', function (error, response, html) { 
    if (!error && response.statusCode == 200) { 
    var $ = cheerio.load(html); 
    $('p', '.chat-box-content').each(function(i, element){ 
     if($(this).attr('style') == 'height: 15px;'){ 
      console.log($(this)); 
     } 
    }); 
    } 
}); 

https://gyazo.com/b80465474a389657c44aeeb64888a006

Я только тусклый его вернуть вторую и третью строчку, так что ссылку и цену, но делать я должен делать? Я новичок, и я проиграл.

ответ

1

Проблема заключается в том, что при запросе страницы окно чата является сложенным/скрытым состоянием, и все ссылки <p> (которые, по-видимому, заполнители) пустые. Если открыть окно чата, запускается какой-то JavaScript на странице и заполняет список.

К счастью, вам совсем не нужно царапать экран. Страница вызывает API для заполнения списка. Вы можете просто вызвать API самостоятельно.

var request = require('request'); 

request.post('https://bitskins.com/api/v1/get_last_chat_messages', function (error, response, data) { 
    if (!error && response.statusCode == 200) { 
     var dataObject = JSON.parse(data); 
     dataObject.data.messages.forEach(function (message) { 
      // For some reason the message is JSON encoded as a string... 
      var messageObject = JSON.parse(message); 
      // The message object has "message" field. 
      // Just use a regex to parse out the link and the price. 
      var link = messageObject.message.match(/href='([^']+)/)[1]; 
      var price = messageObject.message.match(/\$(\d+\.\d+)/)[1]; 
      console.log(link + " " + price); 
     }); 
    } 
}); 

Вы, вероятно, хотите добавить больше обработки ошибок, конвертировать цены в ряд, и т.д.

+0

OMFG вы являетесь Херро, но я не понимаю, все/\ $ (\ d + \. \ d +) /, как я могу отобразить% off? –

+0

Отметьте свой ответ правильно, и я расскажу вам о слэш-материалах. :-) –

+0

сделано, скажите мне PLS –

Смежные вопросы