HTML ソース コードから製品名と価格をスクレイピングするために、Curl、XPath、および PHP を使用しています。これは、私が調べているソース コードに似たサンプルです。
<div class="Gamesdb">
<p class="media-title">
<a href="/Games/Console/4-/105/Bluetooth-Headset/">Bluetooth Headset</a>
</p>
<p class="sub-title"> Console </p>
<p class="rating star-50">
<a href="/Games/Console/4-/105/Bluetooth-Headset/ProductReviews.html">(1)</a>
</p>
<p class="mt5">
<span class="price-preffix">
<a href="/Games/Console/4-/105/Bluetooth-Headset/">1 New</a>
from
</span>
<a class="wt-link" href="/Games/Console/4-/105/Bluetooth-Headset/">
<span class="price">
<em>£34</em>
.99
</span>
<span class="free-delivery"> FREE delivery</span>
</a>
</p>
<p class="mt10">
<a class="primary button" href="/Games/Console/4-/105/Bluetooth-Headset/">
Product Details
<span style="color: rgb(255, 255, 255); margin-left: 6px; font-size: 16px;">»</span>
</a>
</p>
</div>
メディアタイトルを抽出したい:
<p class="media-title">
<a href="/Games/Console/4-/105/Bluetooth-Headset/">Bluetooth Headset</a>
</p>
次の価格クラスも存在する場合のみ:
<span class="price">
<em>£34</em>
.99
</span>
リストされている他の製品の多くには含まれていません。製品名と価格の両方を抽出するか、何も抽出せずに次の製品に進む必要があります。
これは、他の条件に関係なくすべての結果を取得するのに効果的な、現在使用しているコードのサンプルです。
$results=file_get_contents('SCRAPEDHTML.txt');
$html = new DOMDocument();
@$html->loadHtml($results);
$xpath = new DOMXPath($html);
$nodelist = $xpath->query('//p[@class="media-title"]|//span[@class="price"]');
foreach ($nodelist as $n){
$results2[]=$n->nodeValue;
}
これは正しい xpath クエリを使用して可能であると信じていますが、これまでのところ達成できていません。よろしくお願いします。