![](/img/trans.png)
[英]How to scrape a table with changing data using Cheerio in 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.