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
Post a Comment