javascript - Unable to find elements using Cheerio (Node.js/jQuery) -



javascript - Unable to find elements using Cheerio (Node.js/jQuery) -

i'm trying write script scrape users achievements public codecademy profile. currently, how i'm trying parse info (backend, node.js using cheerio):

var express = require('express'); var cheerio = require('cheerio'); var request = require('request'); var app = express(); app.get('/scrape/:username', function(req, res){ var user = req.params.username; console.log('processing request ' + user); url = 'http://www.codecademy.com/' + user + '/achievements'; request(url, function(error, response, body){ if (!error){ var $ = cheerio.load(body); var title, date var json = { achievements: [], meta: { request: { user: user, time: date.now(), }, server: { version: 1, contact: 'benedict@ovalbit.com' } } }; console.log('running parser , scraping achievements.'); $('.achievement-card').each(function() { var info = $(this); title = data.children('h5').text(); date = data.find('small.text--ellipsis').text(); console.log('title: ' + title); console.log('date: ' + date); json.achievements.push({ title: title, date: date }); }); res.type('application/json'); res.json(json); } }); }); app.listen('3006'); console.log('running on port 3006.');

for reference, this profile page looks like:

however, each function never runs. thoughts?

it looks you're generating wrong url you're missing /users/ part before user name. used selector on illustration achievements page , works me (node v0.10.30, cheerio v0.17.0, request v2.46.0):

var request = require('request'), cheerio = require('cheerio'); var url = 'http://www.codecademy.com/users/benedictlewis/achievements'; request(url, function(err, res, body) { var $ = cheerio.load(body); $('.achievement-card').each(function() { var info = $(this); title = data.children('h5').text(); date = data.find('small.text--ellipsis').text(); console.log('title: ' + title); console.log('date: ' + date + '\n'); }); });

that outputs:

title: introduction 'for' loops in js date: feb 1, 2014 title: 50 exercises date: feb 1, 2014 title: build "rock, paper, scissors" date: jan 18, 2014 title: introduction functions in js date: jan 18, 2014 title: 25 points earned in 1 day date: jan 11, 2014 title: take own adventure! date: jan 11, 2014 title: 25 exercises date: jan 11, 2014 title: getting started programming date: jan 11, 2014 title: 10 exercises date: jan 11, 2014 title: first lesson date: jan 11, 2014 title: max streak count of 1 date: jan 11, 2014

javascript jquery node.js

Comments

Popular posts from this blog

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

mediawiki - How do I insert tables inside infoboxes on Wikia pages? -

Local Service User Logged into Windows -