私はウェブサイトにリクエストし、HTMLを取得してcheerioに渡したいと思う。クラス".thumb"
のすべての要素のすべての"href"
属性を取得する必要があります。私はコンソール上で結果を表示しています。私は何度も定義されていません。見つかった要素ごとに仮定します。私はタグや識別子で他の要素をループしようとすると定義されませんが、ループしないで最初のものを取得すれば正しい値が与えられます。要素に.each()を呼び出すときCheerioは未定義を返す
function firstReq(){
req(url, (err,res,html)=>{
if(err){console.error(err);}
var $ = cheerio.load(html);
var arr = []
$("a").each(()=>{
console.log($(this).attr("href"));
});
});
}
私はconsole.log(html)
を試してみました。私はまた、"request"
と"cheerio"
ファイルをロードする時間を与えるために、おそらくsetTimeout
を反復で設定しようとしました。私は最初にurl
からhtmlファイルをダウンロードして(機能の外、呼び出しの前に)自分のコンピュータに転送してからcheerioに渡しましたが、まだ定義されていません。
これはNodeとの私の最初の個人的なプロジェクトです。私は非常に混乱しています。どんな助けもありがとうございます。
アロー機能
function firstReq(){
req(url, (err,res,html)=>{
if(err){console.error(err);}
var $ = cheerio.load(html);
var arr = []
$("a").each((i , elem)=>{
console.log($(elem).attr("href"));
});
});
}
または関数:
私はこの問題は、矢印関数内 'this'を使用していると信じています。キーワード関数に切り替えるか、関数に引数$( "a")を受け入れるようにします。それぞれ(要素=> {console.log($(element).attr( "href"))}) ' – Sidney
@Sidney、矢印関数を使いたい場合は、 '.each((i、elem)=> {...})'を使うことができます。その場合は 'elem === this'となります。 – PitaJ
@シドニー - 答えを投稿してみませんか? – jfriend00