我正在使用 Curl、XPath 和 PHP 来从 HTML 源代码中抓取产品名称和价格。这是一个类似于我正在检查的源代码的示例:
<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 查询可以做到这一点,但到目前为止还无法实现。提前谢谢了。