我是初学者,正在做一个作业,使用 node.io
抓取此页面的内容http://www.nycourts.gov/reporter/3dseries/2013/2013_06966.htm。
我想将 P> 标签下的文本内容保存为变量中的字符串<。
我的代码是这样的:
var nodeio = require('node.io'); var Methods = { 输入:假, 运行: 函数() { this.getHtml('http://www.nycourts.gov/reporter/3dseries/2013/2013_06966.htm', 函数(错误, $) {
//Handle any request / parsing errors if (err) this.exit(err); var content = $('P'); this.emit(content); }); } }
export.job = new nodeio。Job({timeout:10}, methods);
这显示错误:没有与"P"匹配的元素。请帮忙..
我在执行命令时也得到了Error: No elements matching 'P'
:
$ ./node_modules/.bin/node.io query http://www.nycourts.gov/reporter/3dseries/2013/2013_06966.htm P
根本原因是该页面中没有结束</P>
,node.io 不支持像现代 Web 浏览器那样自动更正格式错误的 HTML。 虽然它在查询<blockquote>
时效果很好:
$ ./node_modules/.bin/node.io query http://www.nycourts.gov/reporter/3dseries/2013/2013_06966.htm blockquote
但是,您可以通过使用硒技术在真实浏览器上解析 HTML 文档来实现它。
下面是一个JavaScript的例子,可以在你的主机上使用node和selenium网格运行,以获得你想要的东西。 你可以参考我对问题的另一个回答 你如何让webdriverjs工作?
var webdriverjs = require('webdriverjs');
var client = webdriverjs.remote({
host: 'localhost',
port: 4444,
desiredCapabilities: {
browserName: 'safari', // you can change this accordingly
version: '7',
platform: "MAC" // you can change this accordingly
}
});
client.init();
client.url('http://www.nycourts.gov/reporter/3dseries/2013/2013_06966.htm')
.getText("P",function(err, text) { console.log (text)}).call(function () {});
client.end();