前提・実現したいこと
phpQueryでスクレイピングシステムを作っています。
あるミュージックサイト(Spotify)でのみ要素が取得できないエラーが発生しました。
発生している問題
Spotifyでアルバムのタイトルを取得しようとしているのですが、下記のソースコードで何もechoされない状態です。
該当のソースコード
こちらが該当のソースコードになります。
明らかにこのアルバムのページ(https://open.spotify.com/album/7IBlkWr9DvKRWyR5RSrRcm?si=mtJmYWxJQRCY9VW6cO0GVw)に「.tracklist-name」というクラスは1つしかなく、それについて「eq(0)」で取得しているはずなのですが、echoされません。
PHP
1<?php 2require dirname(__FILE__) . '/phpQuery-onefile.php'; 3$url='https://open.spotify.com/album/7IBlkWr9DvKRWyR5RSrRcm?si=mtJmYWxJQRCY9VW6cO0GVw'; 4$html = file_get_contents($url); 5$doc = phpQuery::newDocument($html); 6echo $doc[".tracklist-name:eq(0)"]->text()."\n"; 7?>
次のように3つ試しましたところ、不思議な状態です。
試したこと
まず次のように「.tracklist-name」を詳細に指定してもechoされません。
PHP
1echo $doc["#main > div > div.Root__top-container.Root__top-container--has-notice-bar > div.Root__main-view.Root__main-view--has-upsell-bar > div > div > div > section > div > div > div.col-xs-12.col-lg-9.col-xl-8 > section > ol > div > div > li > div.tracklist-col.name > div > div.tracklist-name.ellipsis-one-line"]->text()."\n"; 2
一方次のようにtitleタグを指定すると、正常に「Goodbye Kisses by Joe Hertz on Spotify 」がechoできました。
PHP
1echo $doc["title"]->text()."\n";
そして次のようにh2タグを指定すると、なぜか「By Joe Hertz」という値(開発ツールで見ても存在しない値)がechoされました。
PHP
1// 2echo $doc["h2"]->text()."\n";
以上3つを試しましたが問題の原因が皆目つかめず、困り果てております。
具体的な解決策や試すべき事柄についてご存知の方がもしいらっしゃいましたらどうかご教授願えませんでしょうか。
宜しくお願い致します。
ツールのバージョン
●phpQuery 0.9.5
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/15 23:23
退会済みユーザー
2019/03/15 23:27 編集
2019/03/16 06:45