PHP curl web scraper - 抓特定的div

时间:2015-10-22 21:14:53

标签: php curl web-scraping

我需要使用此网站的价格来清除产品清单。

我需要添加什么才能只编写此产品列表(http://www.tehnomanija.rs/lcd-i-led--televizori

这是我的代码:

<?php
$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, "http://www.tehnomanija.rs/lcd-i-led--televizori");
curl_exec ($curl);

$result = curl_exec($curl);
curl_close ($curl);

//parser
preg_match("<td class=\"product_list_cell\">")siU, $result, $matches1);


$suscriptores = $matches1[1][0];
echo "Suscriptores: " . $suscriptores;
print $result;

&GT;

2 个答案:

答案 0 :(得分:0)

看看https://github.com/tj/php-selector
它本质上是DOMDocumentDOMxpath的包装器,它允许你使用css选择器,如此

$elements = select_elements('div#someId', $html);

答案 1 :(得分:0)

使用正则表达式完成此任务是错误的。使用xpath从html中检索所需的dom节点。请参阅an example

我也可能会提到你的一些错误:

  1. 你没有在curl docs中包含 RETURN_TRANSFER
  2. 您没有通过正则表达式docs正确获取。
  3. 所以代码应该是这样的:

    <?php
    $curl = curl_init();
    curl_setopt ($curl, CURLOPT_URL, "http://www.tehnomanija.rs/lcd-i-led--televizori");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    $result = curl_exec($curl);
    curl_close ($curl);
    
    //parser
    preg_match("/<td\s+class=\"product_list_cell\">(.*?)<\/td>/siU", $result, $matches);
    print_r($matches[1]);
    
    $suscriptores = $matches[1];
    echo "Suscriptores: " . $suscriptores;
    print $result;
    

    然而,由于内部结构混合了不同级别的</td>,因此仍然无法通过正则表达式正确获取。你唯一的方法是xPath。 enter image description here