Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用cURL和Regex进行网站抓取_Php_Regex_Curl - Fatal编程技术网

Php 使用cURL和Regex进行网站抓取

Php 使用cURL和Regex进行网站抓取,php,regex,curl,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 fo

我正在尝试使用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和工业产品
婴儿

等等……

这里是一个使用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>"
}
$grep=newdomdocument();
@$grep->loadHTMLFile(“http://www.lelong.com.my/Auc/List/BrowseAll.asp");
$finder=newdomxpath($grep);
$class=“CatLevel1”;
$nodes=$finder->query(“/*[包含(@class,$class')]”);
foreach($node作为$node){
$span=$node->childNodes;
echo$span->item(0)->nodeValue。“
” }
我阅读了对您的问题的评论,其中建议了一种不同的方法和一种可能更适合这份工作的备选答案,但如果您仍想这样做,则需要进行全局搜索()因此,当它找到第一个匹配项,然后使用循环打印保存结果的数组内容时,它不会停止。我没有使用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"; 
if(preg_match_all($regex,$page,$list))
$i=0;
while(isset($list[1][$i])){
echo$list[1][$i]。“
”; $i++; } 其他的 打印“未找到”;

很抱歉代码中有任何错误。

没问题。谢谢你的帮助