質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.80%

PHP でsimple html dom parserを使ってもChromeブラウザのデベロッパーツールで取得できるHTMLと異なる

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 371

TOSHIAKI_

score 5

前提・実現したいこと

PHP でsimple html dom parserを使ってショッピングサイトの情報を取得しようとしています。
が、ある情報の有無を判定したいのですが、その情報にたどり着けません。

HTMLを扱うのは初めてなので、よくわかっていない点が多々あるかもしれませんが、
どういった点を学べばよいのかなども教えていただけると助かります。

よろしくお願いいたします。

発生している問題・エラーメッセージ

ショッピングサイトのURLをWEBブラウザで見ると
「申し訳ございません。この項目はもはや利用できません。」
という文字列が見えるのですが、
simple html dom parser を使ってfile_get_html()をしてもその文字列が取得できません。

該当のソースコード

$url = https://ja.aliexpress.com/item/32884056900.html;
$html = file_get_html($url);

$search_str = '申し訳ございません。この項目はもはや利用できません。'
if(strpos($html, $search_str) == false){
    echo "申し訳ございません。この項目はもはや利用できません。"; echo "\n\n";
}

試したこと

Chromeブラウザで上記のURLを開くと普通に
"申し訳ございません。この項目はもはや利用できません。"
の文字列が見えます。

例えば、Chromeブラウザで、
メニュー→その他のツール→デベロッパーツールでHTMLを見ると該当の文字列があるように見えます。

<div class="product-info" data-spm-anchor-id="a2g0o.detail.1000016.i0.468944eaJJNoFz"><div class="product-title" itemprop="name">オクタコア 4 1gb の Ram アンドロイド 8.0 車の DVD GPS ナビゲーション、マルチメディアプレーヤー車用 BMW ミニクーパー後 2006-2013 ラジオ</div><meta itemprop="url" content="https://ja.aliexpress.com/item/32884056900.html"><meta itemprop="brand" content="AliExpress.com"><meta itemprop="description" content="安い 車用マルチメディアプレーヤー, 中国供給者から直接に購入します オクタコア 4 1gb の Ram アンドロイド 8.0 車の DVD GPS ナビゲーション、マルチメディアプレーヤー車用 BMW ミニクーパー後 2006-2013 ラジオ
お楽しみください✓世界中の無料配送! ✓限られたタイムセール✓イージーリターン"><div class="product-reviewer" itemprop="aggregateRating" itemscope="" itemtype="http://schema.org/AggregateRating"><div class="overview-rating" aria-haspopup="true" aria-expanded="false"><div class="next-rating next-rating-large next-rating-grade-high" tabindex="0" role="group" aria-label="评分选项"><div class="next-rating-base next-rating-base-disabled"><div class="next-rating-underlay" aria-hidden="true"><span class="next-rating-icon"><i class="next-icon next-icon-favorites-filling next-medium"></i></span><span class="next-rating-icon"><i class="next-icon next-icon-favorites-filling next-medium"></i></span><span class="next-rating-icon"><i class="next-icon next-icon-favorites-filling next-medium"></i></span><span class="next-rating-icon"><i class="next-icon next-icon-favorites-filling next-medium"></i></span><span class="next-rating-icon"><i class="next-icon next-icon-favorites-filling next-medium"></i></span></div><div class="next-rating-overlay" style="width: 72px;"><form action="#"><label class="next-rating-icon"><i class="next-icon next-icon-favorites-filling next-medium"></i></label><label class="next-rating-icon"><i class="next-icon next-icon-favorites-filling next-medium"></i></label><label class="next-rating-icon"><i class="next-icon next-icon-favorites-filling next-medium"></i></label><label class="next-rating-icon"><i class="next-icon next-icon-favorites-filling next-medium"></i></label><label class="next-rating-icon"><i class="next-icon next-icon-favorites-filling next-medium"></i></label></form></div></div></div><span class="overview-rating-average" itemprop="ratingValue">3.8</span><i class="next-icon next-icon-arrow-down next-xxs" style="margin-left: 0px;"></i></div><span class="product-reviewer-reviews black-link" itemprop="reviewCount">12 レビュー</span><span class="product-reviewer-sold">27 注文</span></div><div role="alert" class="next-message next-message-notice next-inline next-medium next-only-content"><i class="next-icon next-icon-prompt next-medium next-message-symbol"></i><div class="next-message-content" data-spm-anchor-id="a2g0o.detail.1000016.i1.468944eaJJNoFz">申し訳ございません。この項目はもはや利用できません。</div></div><div class="product-action"><span class="buy-now-wrap"><button title="" type="button" class="next-btn next-large next-btn-primary buynow disable" role="button">今すぐ購入</button></span><span class="addcart-wrap"><button title="" type="button" class="next-btn next-large next-btn-primary addcart disable" role="button">カートに追加</button></span><span class="add-wishlist-wrap"><div class="add-wishlist"><i class="next-icon next-icon-favourite next-large"></i><span class="add-wishlist-num">272</span></div></span></div><div id="search_similar" style="padding-top:4px;"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADVElEQVQ4jW2Ty29UZRjGn+825za3M9PO1FagpTMtcGbKoqDY6dKYaBAiuGqjGxcGTYjExI1/A0itCJiQmBBN1EQXIrWBTa00uEDTsY0MovZmFdvOpdOZM52e73wupEAiT/Ju3rzPL+/ieYhSCts6d/7CS77nveZLL0cpDflSlinj35GAdt6X8vrJN088PL4vopTCxUsfG8169RNdN54NJp/8i4XsChj3me8xr7IWXftzvqNULF4WhnnynbdPbf4PMDo6+lXIjg+IjtRciQXllmnLgKapIAOiaBDTLYnfbk31TP9460vKxevnPhiV2wDWmki+rGnaKaNr391/jIRXjXU2PSPs04ChqGYozQz6LbG4l+rcVVxZmntuaurGzWvXrv9x/PgxAACVW803Qk/sWF7XbK9u72iCCZgUsDhgMYCDwPUZtHB8a3//U0vJROLE8vKy2P6AQqlDIhyr0FibB8JgUfXAbFHAYiA6BQWhbHe6txyLxQ5tbjb0oaEhAgCcMcYDpiU13fDNrYfmIAUiAsIW0CwGbjAoEY1AShnL5XLhzUajBkByKeWWpQnicaCpAPO+2RYQbToidgARTghRUG65WJFSylI0GhWVSoX+B/D9KX+92NGa7Gz4oGAAQhysVUMwoaPVYMRs+qhLH9WZ/LTlNho/FAqFDUqpBwB8YXHpw2Do58uD3XtWNT0ka5LAYmBhDlNQIqRC0/NV2d1Yd8e/ubI7n89fsm17Y3JyUgEAy2b7fl2593cfk82De9Pda6EAVxYnwuQwGIGSCpV6rVq78P57e6GUbgZD6WQiOXH06JGVB0EaGMiFe9Kpi46TOXLgmdxid7qnFo1GAuViUeSnf9LHrnzdRkC0wy8eBqUUExPfu7Va7a2zZ09/RLa70NXVpRu6/nw2m301Ho8/7Xme7XlesVyp3JiZmfm0v//gu5nMvgP7+/qwc+cufPb5F161WnXIo2VyHIe7rmsMDg5GMplMZHV1tTk+Pl4ulUp1x8nYqVR6sr29rTOZSECIAE6fOTNMHy3G7Oys5zjORktLy71UKjXX3t6+lM1k1hYWFmpjY1eX3Hr9hfn5xd9/uV3A1bFv7965U7gJpdRjZ2RkhDxuPzz8itbbu6efc5HgnAf/Ba9tg9l3IwDnAAAAAElFTkSuQmCC" style="padding-right:5px;padding-left:2px;" oncontextmenu="return true;" onmousedown="return true;" onmouseup="return true;" onselectstart="return true;"> <a href="http://my.aliexpress.com/wishlist/wish_item_similar_product_list.htm?productId=32884056900" id="search_similar_link" target="_blank" onclick="return false;">Find similar products</a></div></div>

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+4

Chromeの開発ツールで見えるDOM構造は、JavaScriptで変更された後のものです。一方で、PHPからfile_get_contentsで取得した場合、JavaScriptなしのHTMLだけが取得されます。

JavaScriptでページの中身を構築するような場合、両者は大きく違ってきます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/08 08:48

    ご回答ありがとうございます。
    JavascriptでHTMLが変更されることがあるのですね。
    そうするとJavascripを取得したブラウザが処理しているということで、
    そのJavascriptのソースが見えるとどのように処理しているか分かりそうですね。
    Javascriptが読める状態なのかどうか分かりませんが、その辺はさらに見てみます。

    キャンセル

+1

それなりのサイトならスクレイピングを防ぐために
利用規約で禁止して技術的にも対策してるはずなので諦めたほうが良い。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/08 08:51

    技術的な対策で簡単にHTMLが取得できないようにしていることはありそうですね。
    ご回答ありがとうございました。

    キャンセル

  • 2019/10/08 08:59

    技術的な問題ではなく、規約(契約)的な問題ですよ^^;

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • PHPに関する質問
  • PHP でsimple html dom parserを使ってもChromeブラウザのデベロッパーツールで取得できるHTMLと異なる