2017-12-23 1 views
2

나는 puppeteer를 사용하여 anglesjs로 작성된 웹 페이지를 미리 렌더링하려고합니다. 내 응용 프로그램 스택은 MEAN (Mongo-Express-Angular-NodeJs)입니다. 다음과 같이Puppeteer 및 angularjs html 렌더링 문제

렌더링 논리는 다음과 같습니다

var args = [ 
    '--disable-gpu', 
    '--disable-setuid-sandbox', 
    '--no-sandbox', 
    ]; 


var getPageContent = async function getPageContent(request) 
{ 
    var url = getUrl(request); 
    var browser = await puppeteer.launch({headless: true, handleSIGINT: false, args: args}); 
    var page = await browser.newPage(); 
    await page.goto(url, {waitUntil: 'networkidle2'}); 
    var html = await page.content(); 
    await browser.close(); 
    return html; 
}; 

모든 것이 잘 작동, 나는 페이지의 HTML을받을 수 있나요. 그러나 나는 각도 방식으로 HTML을 얻는다. 아래처럼 :

<title> {{meta.title}} </title> 
<meta property="og:title" content="{{meta.title}}"> 
<meta property="og:description" content="{{meta.description}}"> 
<meta property="og:image" content="{{meta.imageSrc}}"> 

내가 원했던 것은 {{}}이 아닌 페이지의 실제 내용입니다. 같은 뭔가 :이 page.content에 문제가있는 경우 궁금

<title> My Page </title> 
<meta property="og:title" content="My Page"> 
<meta property="og:description" content="Page about saving humanity"> 
<meta property="og:image" content="url_to_image"> 

()? 아니면 페이지의 실제 원시 html을 반환하는 다른 puppeteer API가 있습니까?

답변

0
module.exports.getmessages = async (page, selector, message) => { 
const messages = []; 
const bodyHandle = await page.$$(selector); 
console.log(" table of messages length : ", bodyHandle.length); 
const length = bodyHandle.length; 
console.log(message + "switch ordre after load :\n") 
for (let i = 0; i < length; i++) { 
    const element = bodyHandle[i]; 
    const content = await page.evaluate(body => body.textContent, element); 
    console.log("message" + i + ": ", content + "\n"); 
    messages[i] = content; 
} 
return messages;} 

안녕하세요, 내가 VUE JS와 시뮬 코드를 사용하고 내가 VUE에 의해 생성 된 올바른 값으로 HTML 코드를 얻을, 나는 희망 당신을위한 코드가 작동)