2017-12-19 3 views
1

을 사용하여 페이지 리디렉션을 기다리는 중 일반적인 브라우저를 통해 http://www.oneblockdown.it/en/pharrell-williams-x-adidas-originals/footwear-lifestyle/men-unisex/pharrell-williams-x-adidas-originals-human-race-nmd-bb3070/4267에 액세스 할 때 종종 흰색 페이지에 2.5 초 동안 앉아서 자바 스크립트를 실행 한 다음 자동으로 페이지를 새로 고친 다음 실제 제품 페이지를로드합니다.NodeJS | 요청 모듈

노드 JS 요청 모듈 (일반 NodeJS http/https 모듈 사용)을 사용하여 페이지를 요청할 때 대기하고 제품 페이지를 표시하는 대신 빈 흰색 페이지의 HTML을 반환합니다. 블랭크의 html은 다음과 같습니다. https://pastebin.com/ZSeXuZRc

브라우저가 마치 새로 고침하고 제품 페이지를 보여줄 때처럼 코드를 실행하면 어떻게됩니까?

request(
    { 
     url: 'https://www.oneblockdown.it/en/pharrell-williams-x-adidas-originals/footwear-lifestyle/men-unisex/pharrell-williams-x-adidas-originals-human-race-nmd-bb3070/4267', 
     method: 'GET', 
     headers: { 
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36', 
      'Host': 'www.oneblockdown.it', 
      'Cache-Control': 'max-age=0', 
      'Upgrade-Insecure-Requests': '1', 
      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 
      'Referer': 'http://www.oneblockdown.it/en/footwear', 
      'Accept-Encoding': 'gzip, deflate', 
      'Accept-Language': 'en-US,en;q=0.9,la;q=0.8' 

     } 
    }, 
    function(err, res, body) { 
     if(err || res.statusCode !== 200){ 
      console.log(`FAILED | ${err}`) 
     } else { 
      //parse the body here. It should return product page, but is returning the white html with javascript 
     } 
    }); 

답변

0

불행하게도, 당신은 그렇게 할 수 없습니다

여기에 내 현재 코드입니다. 응답에는 해당 엔드 포인트로 요청을 보낼 때 서버가 리턴하는 모든 것이 포함됩니다. DOM로드시 호출되는 자바 스크립트가있는 경우 (예 : window.onload 또는 document.ready)이 웹 페이지의 경우 해당 변경 사항이 적용되지 않습니다.

이것은 웹 크롤러의 경우에도 문제가 될 수 있습니다 (스크립팅을 사용하지 않고 모든 중요한 정보를 제공하고 페이지가로드되면 스타일링 및 상호 작용과 같은 UI 관련 작업을 수행하는 것과 관련된 검색 엔진 최적화 표준이있는 이유입니다) .