Php 在网页上提取相关产品的价格

Php 在网页上提取相关产品的价格,php,dom,xpath,text-extraction,Php,Dom,Xpath,Text Extraction,我正在做一个网页刮板。我已经用我的产品在网页上搜索了产品标题。如果网页上存在相同的产品,那么我想提取该产品的价格。 为此,我使用XPath 这是我的html代码,我需要从中提取价格 <div class="products_list_table"> <table id="products_list_table_table" cellspacing="6" cellpadding="0" border="0"> <tbody>

我正在做一个网页刮板。我已经用我的产品在网页上搜索了产品标题。如果网页上存在相同的产品,那么我想提取该产品的价格。 为此,我使用XPath

这是我的html代码,我需要从中提取价格

<div class="products_list_table">
    <table id="products_list_table_table" cellspacing="6" cellpadding="0" border="0">
       <tbody>
         <tr>
           <td valign="top" align="center">
              <span class="product_title">Malik Candy FC Composite Hockey Stick</span>
              <div class="list_price_bar all-cnrs">
                  <span class="list_price_title">Price Now:</span>
                  <span class="list_sale_price">£40.00</span>
              </div>
            </td>
         </tr>
        <tr>
           <td valign="top" align="center">
              <span class="product_title">Malik TC Stylish Hockey Stick</span>
              <div class="list_price_bar all-cnrs">
                  <span class="list_price_title">Price Now:</span>
                  <span class="list_sale_price">£70.00</span>
              </div>
            </td>
         </tr>

        ...
       </tbody>
     </table>
   <div>

Malik Candy FC复合曲棍球棒
现价:
£40.00
Malik TC时尚曲棍球棒
现价:
£70.00
...
所有产品都有许多tr标签,如果发现我想提取该产品的价格,我会搜索产品标题

下面是我在test.php文件中的php代码

<?php
set_time_limit(0);
if(isset($_POST['title']) && $_POST['title']!= ''){ 
   $product_title = mysql_real_escape_string($_POST['title']);
   $url = 'http://www.example.com';
   $html = file_get_contents($url);     
   $doc = new DOMDocument(); 
   @$doc->loadHTML($html);      
   $xpath = new DOMXPath($doc);
   $found = $xpath->evaluate("boolean(//span[contains(text(), '". $product_title  ."' )])");
if($found == false){
     echo "Not Found";      
}
else { 
     $elements = $xpath->evaluate("//span[@class='list_sale_price']");
     if (!is_null($elements)) {
        foreach ($elements as $element) {
             $nodes = $element->childNodes;
             foreach ($nodes as $node) {
                 echo $node->nodeValue.'<br>';
                 }
        }
     }
}
 }

?>

您不需要多个表达式。通过选择匹配的
span
后面的
div
,可以用一个XPath表达式提取价格,在此上下文中,提取其子
span
,其类为
list\u sale\u price

//span[contains(text(), 'Malik Candy' )]/following-sibling::div/span[@class='list_sale_price']

谢谢helderdarocha,你能告诉我如何显示这个价格吗?因为它不能在我为显示而编写的foreach代码中显示?
//span[contains(text(), 'Malik Candy' )]/following-sibling::div/span[@class='list_sale_price']