web-scraping phantomjs user-agent http-status-code-405

web scraping - Pretender Firefox en lugar de Phantom.js



web-scraping phantomjs (1)

En realidad, está en page.settings . Hazlo antes de la open .

Aquí hay un ejemplo que lo usa contra esa página que has vinculado:

var page = require(''webpage'').create(); page.settings.userAgent = ''Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36''; page.open(''http://www.oddsportal.com/baseball/usa/mlb/results/page/'', function() { window.setTimeout(function() { var output = page.evaluate(function() { return document.getElementById(''tournamentTable'') .getElementsByClassName(''deactivate'')[0] .getElementsByTagName(''a'')[0] .textContent; }); console.log(output); }, 1000); });

Este ejemplo raspará el nombre de la coincidencia en la primera fila de la tabla. (Lo cual, en este preciso momento es " San Francisco Giants - Boston Red Sox ")

Sobre tu comentario, en realidad puedes usar jquery bajo phantomjs! Mira este ejemplo:

var page = require(''webpage'').create(); page.settings.userAgent = ''Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36''; page.open(''http://www.oddsportal.com/baseball/usa/mlb/results/page/'', function() { window.setTimeout(function() { page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js", function() { var output = page.evaluate(function () { return jQuery(''#tournamentTable .deactivate:first a:first'').text(); }); console.log(output); }); }, 1000); });

Por cierto, para esperar, en lugar de la window.setTimeout que usé en estos ejemplos, te recomiendo que uses waitfor.js en waitfor.js lugar.

Cuando intento eliminar este sitio con Phantomjs, de forma predeterminada, Phantomjs envía los siguientes encabezados al servidor:

"name":"User-Agent", "value":"Mozilla/5.0 (Unknown; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.1 Safari/534.34"}

Y obtengo una respuesta status 405 "Not Allowed" .

Leí en la Referencia de API de Phantomjs que para imitar una solicitud proveniente de algún otro navegador, debo cambiar el valor de mi Agente de usuario. En Wikipedia, encontré el valor que debería usar para pretender ser Firefox en Ubuntu :

''name'': ''User-Agent'', ''value'': ''Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:16.0) Gecko/20120815 Firefox/16.0''

¿En qué parte de Phantomjs debo poner estas propiedades? ¿Dónde debo insertarlos - dentro de page.open , o dentro de page.evaluate , o en la parte superior?