我正在尝试使用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;工业产品
婴儿
等....
答案 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";
对于代码中的任何错误,我们深表歉意。