1

我尝试提取页面的所有文本内容(因为它不适用于 Simpledomparser)

我尝试从手册中修改这个简单的例子

var page = require('webpage').create();
console.log('The default user agent is ' + page.settings.userAgent);
page.settings.userAgent = 'SpecialAgent';
page.open('http://www.httpuseragent.org', function (status) {
    if (status !== 'success') {
        console.log('Unable to access network');
    } else {
        var ua = page.evaluate(function () {
            return document.getElementById('myagent').textContent;
        });
        console.log(ua);
    }
    phantom.exit();
});

我试着改变

return document.getElementById('myagent').textContent;

return document.textContent;

这行不通。

做这个简单的事情的正确方法是什么?

4

4 回答 4

4

这个版本的脚本应该返回页面的全部内容:

var page = require('webpage').create();
page.settings.userAgent = 'SpecialAgent';
page.open('http://www.httpuseragent.org', function (status) {
    if (status !== 'success') {
        console.log('Unable to access network');
    } else {
        var ua = page.evaluate(function () {
            return document.getElementsByTagName('html')[0].outerHTML;
        });
        console.log(ua);
    }
    phantom.exit();
});
于 2013-08-29T23:17:39.750 回答
2

有多种方法可以将页面内容检索为字符串:

  • page.content给出完整的源代码,包括标记 ( <html>) 和文档类型 ( <!DOCTYPE html>),

  • document.documentElement.outerHTML(via page.evaluate) 给出完整的源代码,包括标记 ( <html>),但没有 doctype,

  • document.documentElement.textContent(via page.evaluate) 给出完整文档的累积文本内容,包括内联 CSS 和 JavaScript,但没有标记,

  • document.documentElement.innerText(via page.evaluate) 给出完整文档的累积文本内容,不包括内联 CSS 和 JavaScript,并且没有标记。

document.documentElement可以通过您选择的元素或查询进行交换。

于 2015-01-06T10:06:12.740 回答
1

要提取页面的文本内容,您可以试试这个return document.body.textContent;,但我不确定结果是否可用。

于 2013-08-27T06:20:43.363 回答
0

在尝试解决类似问题时遇到了这个问题,我最终从这个问题中调整了一个解决方案,如下所示:

var fs = require('fs');
var file_h = fs.open('header.html', 'r');
var line = file_h.readLine();
var header = "";

while(!file_h.atEnd()) {

    line = file_h.readLine(); 
    header += line;

}
console.log(header);

file_h.close();
phantom.exit();

这给了我一个包含读入 HTML 文件的字符串,足以满足我的目的,希望可以帮助遇到这个问题的其他人。

这个问题似乎模棱两可(是所需文件的全部内容,还是只是“文本”又名字符串?)所以这是一种可能的解决方案。

于 2015-01-06T02:22:12.190 回答