网站使用cURL和Regex进行刮痧

时间:2014-08-26 01:31:38

标签: php regex curl

我正在尝试使用cURL和Regex废弃类别。但是我只提取其中一个类别的代码(艺术,古董和收藏品)。

这是我的代码:

<?php
$curl = curl_init('http://www.lelong.com.my/Auc/List/BrowseAll.asp');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);

$page = curl_exec($curl);

if(curl_errno($curl)) // check for execution errors
{
    echo 'Scraper error: ' . curl_error($curl);
    exit;
}

curl_close($curl);

$regex = '/<span class=CatLevel1>(.*?)<\/a>/s';
if ( preg_match($regex, $page, $list) )
    echo $list[0]. "<br>";
else 
    print "Not found"; 
?>

任何人都可以帮我纠正这段代码以提取所有类别(没有数字)吗?我已经坚持了很长时间。 谢谢!

样品输出:
艺术,古董和收藏品
B2B&amp;工业产品
婴儿
等....

2 个答案:

答案 0 :(得分:0)

这是一个包含DOMDocument和DOMXPath类的工作代码

$grep = new DoMDocument();
@$grep->loadHTMLFile("http://www.lelong.com.my/Auc/List/BrowseAll.asp");

$finder = new DomXPath($grep);
$class = "CatLevel1";
$nodes = $finder->query("//*[contains(@class, '$class')]");

foreach ($nodes as $node) {
    $span = $node->childNodes;
        echo $span->item(0)->nodeValue."<br>"
}

答案 1 :(得分:0)

我阅读了您的问题的评论,建议采用不同的方法和可能更适合此工作的替代答案,但如果您仍然希望这样做,则需要进行全局搜索(preg_match_all()因此,当它找到第一个匹配时它不会停止,然后使用循环来打印保存结果的数组内容。我还没有使用过cURL而无法测试它,而php并不是我的强者,但代码应该是这样的:

if ( preg_match_all($regex, $page, $list) )
    $i = 0;
    while(isset($list[1][$i])) {
         echo $list[1][$i]. "<br>";
         $i++;
    }
else 
    print "Not found"; 

对于代码中的任何错误,我们深表歉意。