使用PhantomJS提取html和文本
Use PhantomJS to extract html and text
我试图提取页面的所有文本内容(因为它不适用于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;
这行不通。
做这件简单的事的正确方法是什么?
这个版本的脚本应该返回页面的全部内容:
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();
});
有多种方法可以将页面内容检索为字符串:
-
page.content
给出了完整的源,包括标记(<html>
)和doctype(<!DOCTYPE html>
), -
document.documentElement.outerHTML
(通过page.evaluate
)提供了完整的源,包括标记(<html>
),但没有doctype, -
CCD_ 7(经由CCD_;JavaScript,但没有标记,
-
CCD_ 9(经由CCD_;JavaScript并且没有标记。
document.documentElement
可以通过您选择的元素或查询进行交换。
要提取页面的文本内容,您可以尝试此return document.body.textContent;
,但我不确定结果是否可用。
在试图解决类似问题时遇到了这个问题,我最终根据这个问题调整了一个解决方案,如下所示:
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文件的字符串,这对我的目的来说已经足够了,希望能帮助其他遇到这种情况的人。
这个问题似乎很模糊(是所需文件的全部内容,还是仅仅是"文本",也就是字符串?)所以这是一个可能的解决方案。
相关文章:
- 我收到消息“资源解释为脚本,但使用 MIME 类型文本/html 传输”
- 如何使按钮单击并更改以前显示的文本(html)
- 使用 Javascript 解析电子邮件源的文本/html 部分
- Javascript/jQuery,将CSS应用于包含特定文本/html的元素
- jQuery文本html操作,以查找大量文本中出现的字符,然后更改其颜色
- 使用 Jquery 创建具有转义文本 + HTML 的元素
- 在空节点(如文本节点)中添加文本/html
- 从网站获取特定文本 (html)
- 如何解决“资源解释为脚本但使用 MIME 类型文本/html 传输”
- 请求 JSONP 时的文本/html 输出
- 将元素添加到 DOM 给定的纯文本 HTML 中,仅使用纯 JavaScript(没有 jQuery)
- 在gmail撰写邮件区域中获取选中/突出显示的文本html
- 如何确定是否在父元素的开始或结束存在文本?HTML DOM &JavaScript
- 在输入文本html中显示格式
- 如何使纯文本html javascript
- 资源解释为脚本,但传输MIME类型文本/html javascript
- 从Javascript传递文本- HTML- PHP
- 从DOM对象中获取文本/html
- 脚本类型=“文本/ html"从文件中包含HTML
- jsFiddler.NET中的文本/HTML编辑器