2013-08-26 21 views
1

我尝试提取页面的所有文本内容(因为它不与Simpledomparser工作)使用PhantomJS提取HTML和文本

我尝试修改从手动

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; 

这不起作用。

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

回答

1

要提取的页面的文本内容,你可以试试这个return document.body.textContent;,但我不知道结果会是可用的。

+0

您好我尝试,但但它resturns NULL –

2

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

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(); 
}); 
0

已经遇到了这个问题,同时努力解决类似的问题,我结束了从this question适应的解决方案,像这样:

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文件中的字符串。

的问题似乎模糊不清(这是该文件的全部内容需要,或仅仅是“文本”又名字符串?)所以这是一个可能的解决方案。

+0

你并不需要使用流API进行简单的阅读文件。只需使用'var header = fs.read('header.html')'。 –

2

有多种方式来检索页面内容为一个字符串:

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

  • document.documentElement.outerHTML( )给出了完整的源包括标记(<html>),但没有DOCTYPE,

  • document.documentElement.textContent(通过page.evaluate)给出了完整的文档,包括内联CSS &的JavaScript累计文本内容,但没有标记,

  • document.documentElement.innerText(通过page.evaluate)给出不包括内联CSS & JavaScript和不完整的文档累计文本内容标记。

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