問題タブ [cheerio]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
function - 実行されていないチェリオ オブジェクトの coffeescript の関数
私はこのコードを持っています:
したがって、このコードが実行されると、基本的にエラーは発生せず、私のインターフェイスでは次の結果が得られます
しかし、各ブロックのコードは決して実行されないようです (コンソール出力 'asdf' はありません)。私は何を間違っていますか?
node.js - Nodejs と Cheerio を使用して壊れた HTML コードを解析する
Nodejs と Cheerio を使用して、表形式のデータを含む純粋な静的 html ページをスクレイピングしようとしています。しかし、問題は、ページが適切な HTML DOM を持っていないことです。つまり、閉じられていない開始タグがたくさんあります。他にも開始の</table>
ない終了タグ ( ) があります。
サンプル コード (警告: コードは実際のサンプルに近く、html は壊れています)
ご覧のとおり、閉じていない P タグがあります。下部には、
開いていない</table>
&タグがあります。</div>
では、cheerio & nodejs を使用して Data1、Data2、Data3、Data4 をフェッチするにはどうすればよいですか? そのようなデータを解析するのに効率的な他のライブラリも実行します
編集(解決策):問題は解決しました。私がしたことは、htmlタグを小文字に変換しただけで、うまくいきました..小文字が重要な理由はわかりませんが、cheerioではうまくいきました.
javascript - (ノード) 警告: EventEmitter のメモリ リークが検出された可能性があります
予約代理店のサイトから連絡先情報 (URL と電子メール) を取得するために、cheerio.js と request.js の上に小さなスクレイパー スクリプトを作成しました。実行して必要なすべての情報を返しますが、実行中に次の警告が5回連続して表示されます。
私の本能は、別のリクエストでリクエストをネストしたという事実のために、おそらくこの警告を受けていると言っています。確かではありませんが、私が知っていることは、getArtistInfo()
関数のcheerio.js.each()
ループの1つにあるネストされたリクエストが呼び出されたときに警告が表示されるということです。(私が何を意味するかを見るために以下のコードを見てください)
私のスクレーパーのコードは次のとおりです。
ここでスパゲッティをめちゃくちゃにしましたか?
この EventEmitter メモリ リークの問題が発生しないようにするにはどうすればよいですか?
javascript - コールバック関数でプッシュされたデータを取得するグローバルに定義された配列が、グローバル スコープで空になるのはなぜですか?
グローバル変数に空の配列を代入しますartistURLs
。次に、文字列 (ローカル変数artistURL
) をartistURLs
Cheerio.each()
イテレーター メソッドで配列にプッシュします。
私はそれartistURL
が正常にプッシュされているartistURLs
ことを知っています
console.log(artistURLs);
端末に入力された配列が表示されます。問題はconsole.log(artistURLs);
、グローバル スコープでコールバック関数の外で実行しようとした場合です。例えば
console.log(artistURLs);
の外に移動したことがわかりますrequest()
。何らかの理由artistURLs
で、グローバル スコープでアクセスしようとすると、`request()~ で発生したすべての処理がまったく発生しなかったかのように、空の配列が返されます。
なぜこれが起こっているのですか?artistURLs
また、プッシュされているすべての URL が.artistURLs
ありがとう
node.js - 現在cheerioとnode.jsを使用してページ1をスクレイピングする方法は?
したがって、これは複雑な質問かもしれませんが、次のようになります。
node.js を使用して、ローカルでホストされるシンプルな Web スクレイパーを作成しています。ソースファイルでスクレイピングする URL を手動で定義すると、完全に正常に動作します。現在、ユーザーに選択した URL を入力させようとしています。次に、入力した URL を空の div に追加します。理想的には、cheerio を使用してその div のコンテンツを取得できます。
残念ながら、スクリプトが実行されている同じページで作成されているデータを解析する方法がわかりません。どんな洞察も大歓迎です!
node.js - Cheerio node.js でコールバックする
「request」と「cheerio」を使ってスクレイパーを書こうとしています。100 個の URL の配列があります。私は配列をループし、各 URL で「リクエスト」を使用してから、cheerio.load(body) を実行しています。i を 3 より大きくすると (つまり、テストのために i < 3 に変更すると)、var productNumber が定義されておらず、未定義の変数で split を呼び出すことができないため、スクレーパーが壊れます。Webページが応答し、本体をcheerioでロードする時間がある前にforループが進んでいると思います.nodeJS - Cheerioでコールバック関数を使用するという質問は同意するようです.
私の問題は、未定義の変数を取得しないように、ループの各反復でWebページが「ロード」または解析されたことを確認する方法がわからないことです。他の回答によると、コールバックは必要ありませんが、どうすればよいですか?
出力例:
node.js - Chrome は、私の RequestJS & CheerioJS アプリとは異なる html を表示します
私のスクレーパーアプリは、クエリ文字列が添付された Vimeo URL を検索しています。
'http://vimeo.com/search?q=angularjs'
request()
その URL を Chrome に読み込むと、スクレイパーからその URLに表示されない多くの要素が表示されます。Chrome とスクレイパーの両方で読み込める HTML は、ナビゲーション バーとフッターにある HTML のような静的要素のようです。クエリ文字列を処理する Vimeo によって生成される要素にアクセスしようとするとsearch?q=angularjs
、スクレーパーが Chrome に表示されるビデオ ギャラリー グリッドにアクセスできません。これまでの私のスクレーパーは次のとおりです。
$
Cheerio で本体をロードした後、実行します
console.log($('#site_header .join a').text());
Join
コンソールにログを記録します。それはうまくいきます。偉大な。でももしそうなら
console.log($('#page_header h1').text());
コンソールに記録されるのはPlease Try Again
、クエリを実行できなかったことを意味すると思います。そして、Chrome のページ ソースにその HTML が表示されると、次のように表示されます。
そして、確かに私は走った
console.log($('html').html());
browse_content
ビデオサムネイルギャラリーグリッドを含むdivが欠落しているHTMLページを吐き出します。これが、次のコードが何も返さない理由です。
では、Vimeo が要求しているコンテンツをスクレイパーに提供したくないのはなぜでしょうか?