npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

buscacursos-uc-scraper

v5.0.0

Published

[![dependencies][dependencies-image]][dependencies-url] [![dev-dependencies][dev-dependencies-image]][dev-dependencies-url]

Downloads

5

Readme

BuscaCursos UC Scraper

dependencies dev-dependencies

This project uses mrpatiwi/buscacursos-uc and requires Node 5.3.x or newer.

Use by your own responsibility, because this creates heavy load on http://buscacursos.uc.cl

How does it works

When you query http://buscacursos.uc.cl you can have at most 50 results without be able to get the next results (no pagination).

This works by querying the initials (MAT, LET, etc) and counting the results, then if the results are more than 50, this perform another ten (recursive) queries like: MAT0, MAT1, ..., MAT9, otherwise just return the results.

In shorter words, this performs a kind of Depth First Search (DFS).

Install

This shall not be published to npm.

To install as a dependency, edit the package.json and add:

"dependencies": {
    "buscacursos-uc-scraper": "git+https://[email protected]/mrpatiwi/buscacursos-uc-scraper"
}

Usage

The function deepSearch receives an array of course initials (strings of length 3).

  • Example: MAT, IIC, DNO, ...
scraper.deepSearch(['IIC', 'MAT'], { year: 2016, period: 1 }).then(courses => {
  console.log('Count:', courses.length);
  fs.writeFile('./some.json', JSON.stringify(courses, null, 4), function(err) {
    if (err) return console.error(err);

    console.log('success!');
  });
}).catch(err => {
  console.error(err);
});

All the (current) available identifiers are importable with:

const scraper = require('buscacursos-uc-scraper');
const initials = scraper.initials;

Usage:

'use strict';

const fs = require('fs');
const scraper = require('buscacursos-uc-scraper');

// Recommended:
// Use known initials to speed the process.
const initials = scraper.initials;

scraper.deepSearch(initials, { year: 2016, period: 1 }).then(courses => {
  console.log('Count:', courses.length);
  fs.writeFile('./all.json', JSON.stringify(courses, null, 4), function(err) {
    if (err) return console.error(err);

    console.log('success!');
  });
}).catch(err => {
  console.error(err);
});

// To perform a full search use (rediscover initials):
//
// This takes a lot of time to complete.
// Also, creates heavy load on the server, use with caution.
// Big chances of failing:
//
// scraper.all({ year: 2016, period: 1 }).then(courses => { ...