2013-08-26 19 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可以通過您選擇的元素或查詢進行交換。