繁体   English   中英

如何使用带有ASP和AJAX的node.js抓取网站

[英]How to scrape a website using node.js with ASP and AJAX

我遇到以下问题。 我需要对以下网页表单进行网络抓取

该网页用于车辆技术审查,您可以尝试使用以下车辆牌照CDSR70

正如我已经提到的,我正在使用node.js,而我的package.json文件如下:

{
  "name": "test",
  "dependencies": {
  "express": "^3.4.8",
  "express.io": "^1.1.13",
  "swig": "^1.3.2",
  "connect-redis": "^1.4.7",
  "request": "^2.34.0",
  "cheerio": "^0.13.1",
  "urllib": "^0.5.8"
  }
}

另外,我正在使用Firebug来了解将哪些参数发送到数据库,但是显然,此表单是使用AJAX发送的,因此使用Firebug并没有太大帮助。

这是我要执行的代码。

var urllib = require('urllib');
var cheerio = require('cheerio');
urllib.request('http://www.prt.cl/Paginas/RevisionTecnica.aspx', {
method: 'POST',
data: {ppu: 'CDSR70'}
}, function(err, data, res) {
            if(!err && res.statusCode == 200){
                var $ = cheerio.load(data);
        $('#resultPanel').each(function() {
            console.log($(this).text().trim()); 
        });
    }
    else
        //TODO
        throw err;
    });

这是包含表结果的html

<div id="resultPanel" style="display: block;">

我要取消的是整个表格结果,这意味着车辆信息(X车辆经过检查的所有信息)和信息库(Informacióndelvehículo)。 (InformacióndeRevisiónTécnica)。 主要问题是我仅收到此文本。

Pinche para ver información de Revisión Técnica





                    Pinche para ver información de Planta de Revisión Técnica













                    Mapa de Ubicación de PRT

如您所见, trim()函数也不起作用。 欢迎任何帮助和建议。 谢谢

编辑:如果我更改POST方法为GET方法,我得到相同的结果。

看看PhantomJS( http://phantomjs.org/ )和CasperJS( http://casperjs.org/ )。 两者都是使用nodejs构建的,并且可以执行javascript-您应该可以使用它们来抓取该网站。

最后。 我从一个面组那里得到了答案。 实际上,URL错误。 因此,网址实际上应该是:

urllib.request('http://www.prt.cl/infovehiculomttwsNew.asmx/infoVehiculoMTT', {
    method: 'POST',
    data: {ppu: 'CDSR70'} 
}, function(err, data, res) {
    if(!err && res.statusCode == 200){
        var $ = cheerio.load(data);
        $('*').each(function() {
            console.log($(this).text());                
        });
    }
    else
        //TODO 
        throw err;
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM