使用NodeJS进行网页抓取时不接受Cookie

时间:2016-02-05 14:26:26

标签: node.js post cookies web-scraping

我正在制作一个脚本,以便从表单中对POST请求的响应中进行网络抓取。问题是该页面要求一个带有JSESSIONID的cookie,所以在此之前,该脚本向同一页面发出GET请求以挽救发送的cookie以在POST请求中使用它,但页面响应是&# 39;错误400:请求无效路径/ SalidaAplicacion'

var request = require('request');
var async = require('async');
request = request.defaults({
    jar: true
});

var url = "http://civil.poderjudicial.cl/CIVILPORWEB/AtPublicoDAction.do";
var headers = {
    'Host': 'civil.poderjudicial.cl',
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Accept-Encoding': 'gzip, deflate',
    'Connection': 'keep-alive'
}
var options = {
    url: url,
    followredirect: true,
    forever: true,
    headers: headers
}
var form = {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Content-Length': '326',
    'TIP_Consulta': '3',
    'TIP_Lengueta': 'tdDos',
    'SeleccionL': '0',
    'RUC_Tribunal': '3',
    'FEC_Desde': '01/1/2016',
    'FEC_Hasta': '01/2/2016',
    'SEL_Litigantes': '0',
    'COD_Tribunal': '375',
    'irAccionAtPublico': 'Consulta',
    'cpMonth': '1',
    'cpYear': '2016'
}
var cookie;

async.series([
    function getCookie(callback) {
        request.get(options, function(error, response, body) {
            cookie = response.headers['set-cookie'][0];
            callback(null, 1);
        })
    },
    function getPage(callback) {
        headers['cookie'] = cookie;
        request.post({
            url: url,
            form: form,
            headers: headers
        }, function(err,httpResponse,body){
            if (err)
                return console.error('ERROR:', err);
            console.log(body);
            callback(null, 1);
        });
    }]
);

此外,当使用来自Web浏览器的cookie时,页面会以预期的方式响应,因此显然页面不接受所获取的cookie。 提前谢谢!

0 个答案:

没有答案