var request = require('request'); var cheerio = require('cheerio'); request({ uri: "https://www.google.pt" }, function(error, response, body) { if(response && response.statusCode && response.statusCode < 300) { var $ = cheerio.load(body); var el = $('#gbw').find('a.gb_ga'); console.log(el.attr('title')); }//if });
No entanto alguns sites estão por trás de proxies que protegem contra coisas chatas como ataques de DOS, e outras coisas, e acabam por bloquear este tipo de pedidos.
A forma que encontrei para conseguir evitar ser bloqueado é utilizar um headless browser, normalmente utilizado para testes automáticos ao UI, e assim ultrapassar essas protecções chatas.
Existem alguns módulos para nodejs no entanto alguns semi vivos, outros com problemas estranhos, o que estou a utilizar sem grandes problemas é o phantom, um wrapper para o phantomjs. Para utilizar é necessário ter o phantomjs instalado:
sudo npm install phantomjs -g
Exemplo de utilização:
var phantom = require('phantom'); var ph = false; phantom.create(function (obj) { ph.createPage(function (page) { page.open("https://www.google.pt", function(status) { if(status == "success") { page.evaluate(function () { return document.getElementsByTagName('html')[0].innerHTML; }, function(result) { var $ = cheerio.load(result); var el = $('#gbw').find('a.gb_ga'); console.log(el.attr('title')); }); }//if }); });
Happy scrapping.