私はスクレーパーページを使用してサブページを見つけてその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;
}
}
});
});
}
});
}
ありがとうございました!
私は '初期化または宣言itemurl'表示されません。あなたのコードには 'item'というものはありません - ここでは' title.includes(item) 'が使われています。 – EyoelD
実際に 'item'と' itemurl'を持っていれば、 'href'の値はどうなっていますか?それは完全なURLを含んでいるのか、それともその一部だけを含んでいますか?完全なURLがあれば、 'url + i'の代わりに' i'を使うだけです。私は多分間違っている。 – EyoelD
それは実際にvar itemulrであるべきです、それはそこで初期化します。アイテムは関数パラメータとして与えられます! hrefは/ item値なので、実際にurlに追加されます。ありがとうございました! – Jeroen365