2017-12-28 76 views
0

私はスクレーパーページを使用してサブページを見つけてそのURLをエクステンション内の関数に渡すためのFirefoxのjavascript拡張を作成しています。スクレーパーはCheerioを使用して構築されており、ローカルマシンでNode.jsを使用してスクレーパーを作成してテストしましたが、拡張機能で実装するのに問題があります。私はブラウザ内で拡張機能を実行している可能性が最も高いと認識していますが、「要求」接続を作成することはできません。Javascript拡張子でノードjsを使用してWebページをスクラップする

私がscrape関数を呼び出すと、エラーは発生せず、何も返されません(コンソールログもないので、起動しません)。誰も私はどのマシン上の拡張機能からこの関数を呼び出すことができるか知っていますか?拡張子などにNode jを含める方法はありますか?コードは以下の通りです!

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 Chromeの拡張機能で少しずつ異なります。

まず、撤去しているドメインをmanifest.jsonに含める必要があります。

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

また、あなたが必要とするデータを取得し、あなたがデータをこすりする必要が適切なのStateChangeを待つXMLHttpRequest INORDERを使用して、XHRリクエストを行う必要があります。あなたはここでその詳細を読むことができます:

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

関連する問題