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

我正在使用网络刮板。我已经用我的产品在网页上搜索了产品标题。如果页面上存在相同的产品,那么我想提取该产品的价格。
为此,我正在使用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>

所有产品都有许多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>';
                 }
        }
     }
}
 }

?>

在这里,我正在使用test.php中的表格来搜索产品

<html>
<head>
<title></title>
</head>
<body>
   <form action="" method="post">
       <label>Enter product title to search</label><br /><br />
       <input type="text" name="title" size="50" /><br /><br />
       <input type="submit" value="Search" onclick="msg()"/>
   </form> 
</body>
</html>

找到产品后,我想提取该产品的价格,但是它会在页面上显示所有价格。我在哪里弄错了。需要xpath表达式来提取匹配产品的价格。

参考方案

您不需要多个表达式。您可以通过在匹配的div之后选择span来使用一个XPath表达式提取价格,在这种情况下,提取其子类span,其子类为list_sale_price

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

CodeIgniter更新查询被执行两次 - php

我正在使用CodeIgniter 2.2。每次访问页面时,我都必须用+1更新数据库。代码可以工作,但是每次都会增加+2。示例:如果是total views=2,则在单击页面后total views应该是3,但是数据库中的值是4。我确定我在控制器中仅调用一次模型add_one_to_view_image。控制者 function view(){ $view_i…

故障排除“警告:session_start():无法发送会话高速缓存限制器-标头已发送” - php

我收到警告:session_start()[function.session-start]:无法发送会话缓存限制器-标头已发送(错误输出开始如果我将表单数据提交到其他文件进行处理,则可以正常工作。但是,如果我将表单数据提交到同一页面,则会出现此错误。请建议<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0…

通过php表单修改我的xml文件 - php

这是我的xml文件和下面的php代码。我输入了一个输入类型,它将按名字搜索学生。然后将显示有关特定学生的信息,并且将显示另一个按钮更新。问题是我想在那之后修改信息。如何通过标签名称获取元素,以便可以修改有关特定学生的信息?<students> <student> <firstname>John</firstname&…

Div单击与单选按钮相同吗? - php

有没有一种方法可以使div上的click事件与表单环境中的单选按钮相同?我只希望下面的div提交值,单选按钮很丑代码输出如下:<input id="radio-2011-06-08" value="2011-06-08" type="radio" name="radio_date&#…

PHP-复选框组 - php

我有一个需要发布的表单复选框组。<input type="checkbox" value="true" checked name="chk0[]"> <input type="checkbox" value="false" name=…