2017-01-08 8 views
0

私はCheerioで掻き集めていましたが、私が探している特定のHTML要素を見つけることができましたが、何らかの理由でテキストが表示されません。Cheerioで掻いて、テキストは表示されません

たとえば、私のWebブラウザで、要素を検査すると、<a href = "#" data-bind="text: MovieName, attr: { href: DetailsUrl }">Why Him?</a>が表示されます。

しかし、スクラップしながらオブジェクトを印刷すると、<a href = "#" data-bind="text: MovieName, attr: { href: DetailsUrl }"></a>と表示されます.text()関数を呼び出すと、何も返されません。なぜこれが起こるのですか?

答えて

3

検査要素は、Cheerioが何かを見ることができる有効なテストではありません。代わりにView Sourceを使用する必要があります。

「要素の検査」は、ブラウザに存在するさまざまな技術(CSSやJavaScriptなど)をすべて適用した後で、ブラウザが要素をどのようにレンダリングしたかをライブビューで表示します。一方、View Sourceは、サーバがブラウザに送信した生コードであり、一般的にCheerioが受け取るものと同じであると見なすことができます。つまり、HTTPヘッダーが同一であることを確認した場合、特にcontent negotiationに関連するものがあることを前提とします。

CheerioはDOMパーサーですが、ブラウザをシミュレートしません。たとえば、JavaScriptを使用してテキストを追加すると、そのJavaScriptは実行されないため、テキストはそこには表示されません。

ブラウザシミュレーションが重要な場合は、PhantomJSを使用する必要があります。非常に現実的なブラウザレンダリング設定が必要な場合は、WebDriverLeadfootを調べてください。

関連する問題