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.
