Webページのスクレイピングを行っているPHPコードを維持しようとしています。 Webページが変更されているので、アップデートが必要ですが、Xpathでそれほど経験していないので、苦労しています。XpathクエリでNULLが返されています
基本的にこれは私が「/medias/myimage.jpg」の値であるIMGタグからsrcset属性を抽出しようとしています
関連<div class="carousel-item-wrapper">
<picture class="">
<source srcset="/medias/tea-tree-skin-clearing-foaming-cleanser-1-640x640.jpg?context=product-images/h3b/hd3/8796813918238/tea-tree-skin-clearing-foaming-cleanser_1-640x640.jpg" media="(min-width: 641px) and (max-width: 1024)">
<source srcset="/medias/tea-tree-skin-clearing-foaming-cleanser-1-320x320.jpg?context=product-images/h09/h9a/8796814049310/tea-tree-skin-clearing-foaming-cleanser_1-320x320.jpg" media="(max-width: 640px)">
<img srcset="/medias/myimage.jpg" alt="150 ML" class="">
</picture>
</div>
されるHTMLの部分です。私はXPATHヘルパークロムプラグインを使って私を助けています。私は以下のxpathを持っています。
//div[@class="carousel-item-wrapper"]/picture/img/@srcset
プラグインでは、期待通りの結果を返しますので、正常に動作しているようです。
また、私はオンラインのxpathテスターhttp://www.online-toolz.com/tools/xpath-editor.phpを使用してもOKです。
しかし、私のPHPコードでは、null値を取得します。私はもちろん持って
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->strictErrorChecking = false;
$dom->recover = true;
@$dom->loadHtml($html);
$xPath = new DOMXPath($dom);
//Other xPath queries executed OK.
$node = $xPath->query('//div[@class="carousel-item-wrapper"]/picture/img/@srcset')->item(0);
if ($node === NULL)
writelog("Node is NULL"); // <-- Writes NULL to the log file!
は、属性名などを指定しないようにしよう、この上のさまざまなバリエーションの多くを試みたがない運を持つすべての。
私は間違っていますか?私はそれが何か単純でなければならないと確信していますが、私はそれを見つけられません。
同じHTMLドキュメントでPHPコードを使用している他の抽出は正常です。だから私はこの要素だけで問題を引き起こします。
が読み/編集/クエリあなたのHTMLデータ? – jhmckimm
いくつかの詳細を追加できますか?$ xPathなどをどのようにインスタンス化していますか? –
あなたのHTMLが無効で、 "loadHtml"の前に "@"を削除すると、 "タグソースがエンティティで無効です"というエラーが表示されます。 htmlを編集できる場合は、ソースタグ – christophe