2017-07-16 3 views
0

データを抽出するときに、CSS/xpathsを使用できます。しかし、ページソースでこれを行う方法は似ています。ページソース、つまり各行の先頭にあるテレビをスクラップする信頼できる方法はありますか?

www.amazon.com/Best-Sellers-Electronics-Televisions/zgbs/electronics/172659

あなたは、ページのソースを取得し、正規表現を使用して解析したが、たとえばテレビがページにロードされなかった場合は、おそらく信頼性の高いことができませんでした。私はいろいろな解決策を探しましたが、私はまだ、各行の始めにすべてのテレビ(1、4、7など)を取得したり、信頼できる方法、例えばページのソースにCss/xpathsを使用していることを述べています。

私が後にしていることの信頼できる方法のゴールデンスタンダードは何ですか?

答えて

0

ページソースを取得するには、ページがサーバー側で完全にレンダリングされている場合(ほとんどのページは表示されません)、またはブラウザでレンダリングされる実際のDOMを取得するヘッドレスクロム(https://developers.google.com/web/updates/2017/04/headless-chrome)を使用できます。

コンテンツをスクレイプするために、cheerio(https://github.com/cheeriojs/cheerio)を使用しました。これはHTMLでオブジェクトを読み込み、jQuery式を使用してそのデータを削り取ることができます。 (ヘッドレスクロムでは、訪問したページでJSを実行できるため、必ずしもcheerioは必要ありません)。

具体的な例では、適切なクラスセレクタを組み合わせてTVを含むdivを取得し、属性セレクタで 'margin-left = 0px'を使用して各行の最初の項目を取得することで、各行にTVを取得できます。これは明らかにページの構造に非常に拘束されており、ページソースの変更が最小限に抑えられている可能性があります。

ページにロード/ロードされていない要素がある場合(それがテレビの存在を意味していた場合)、私が知っている金色の解決策はありませんページが読み込まれ、スクレーパーがうまく機能しなくなるのに十分な時間を置いてください。

関連する問題