2017-12-28 18 views
0

나는 스크래퍼 페이지를 사용하고 하위 페이지를 찾고 해당 URL을 확장 기능의 함수에 전달하려는 Firefox 용 javascript 확장을 만들고 있습니다. 스크레이퍼는 Cheerio를 사용하여 만들어졌으며 로컬 컴퓨터에서 Node.js를 사용하여 스크레이퍼를 만들고 테스트했지만 확장 프로그램에서 구현하는 데 문제가 있습니다. 브라우저 내부에서 확장 기능을 실행하는 것이 가장 가능성이 높습니다. 요청 연결을 만들지 않습니다.자바 스크립트 확장에서 노드 js를 사용하여 웹 페이지 긁힘

스크래프 (scrape) 함수를 호출하면 오류가 발생하지 않고 대신 전혀 반환되지 않습니다 (콘솔 로그도 없으므로 실행되지 않습니다). 아무도 내가 어떤 기계의 확장 기능에서이 기능을 호출 할 수 있는지 알고 있습니까? 확장 등의 노드 js를 포함시키는 방법이 있습니까? 코드는 아래와 같습니다!

function scrape(item) { 
    request(url, function (error, response, html) { 
     if (!error && response.statusCode == 200) { 
      console.log("connected"); 
      // create cheerio 
      var $ = cheerio.load(html); 

      $('.inner-article a').each(function (i, elem) { 
       if ($(this).children().length == 1) { 
        availableItems.push($(this).attr('href')); 
       } 
      }); 

      availableItems.forEach(function (i) { 
       request(url + i, function (error, response, html) { 
        if (!error && response.statusCode == 200) { 
         var $ = cheerio.load(html); 
         var title = $('#details').find('h1').text(); 
         title = title.toLowerCase(); 
         title = title.replace(/\s+/g, ''); 
         var n = title.includes(item); 
         if (n) { 
          console.log('found'); 
          itemurl = url + i + ''; 
          return itemurl; 
         } 
        } 
       }); 
      }); 
     } 
    }); 
} 

대단히 감사합니다.

+0

나는'초기화 또는 선언 itemurl' 표시되지 않습니다. 또한 여기에 사용되는'item'과 같은 것이 없습니다 ->'title.includes (item)'. – EyoelD

+0

사실'item'과'itemurl'을 가지고 있다면'href' 값은 어떻게 생겼을까요? 그것은 전체 URL 또는 그 일부만 포함하고 있습니까? 전체 URL을 가지고 있다면, 'url + i'대신'i'를 사용해야합니다. 나는 틀렸어. – EyoelD

+0

실제로 var itemulr이어야하며, 거기서 초기화됩니다. 항목은 함수 매개 변수로 제공됩니다! href는/item 값이므로 URL에 추가하면 실제로 작동합니다. 고맙습니다! – Jeroen365

답변

0

Google 크롬 확장 프로그램에서 요청이 조금씩 다르게 처리됩니다.

먼저, 당신은 manifest.json에서 근근이 오르고있는 도메인을 포함시켜야합니다.

"name": "Extension Name", 
"permissions": [ 
    "http://www.example.com/" 
] 

당신은 또한 당신이 필요로하는 데이터를 얻을하고 데이터를 긁어하는 데 필요한 적절한하여 stateChange 기다릴 XMLHttpRequest 중위를 사용하여 XHR 요청을해야한다. 당신은 여기에 대한 자세한 내용을보실 수 있습니다 :

https://developer.chrome.com/extensions/xhr

관련 문제