我有这个密码
try{
$totalpages=$crawler->filter('.button-see-more');
$totalpages=$totalpages->extract(array('data-total-pages'))[0];
if($totalpages>0)
for($i=1;$i<=$totalpages;$i++)
{
$client->request('GET', 'http://www.daraz.pk/catalog/getproducts/?pathInfo=phones%2Fqmobile&page='.$i.'&YII_CSRF_TOKEN='.$CSRF, array(), array(), array(
'HTTP_X-Requested-With' => 'XMLHttpRequest',
));
echo $i.'th page: '.$client->getResponse()->getContent()."\r\n";
}
}
catch (InvalidArgumentException $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}根据文档页
$totalpages=$crawler->filter('.button-see-more');当筛选器不匹配任何内容时,它应该抛出一个没有抛出的InvalidArgumentException,而是在我得到的控制台中抛出
PHP注意:未定义的偏移量:0
我怎么能抓到这个?
发布于 2014-12-27 18:37:20
文档中的任何地方都没有说明,如果InvalidArgumentException与任何内容不匹配,它就会抛出它:
https://github.com/symfony/dom-crawler/blob/2.6/Crawler.php#L675
如果您还没有安装Symfony的RuntimeException,那么唯一可能引发的异常是一个CssSelector。因此,在您的情况下,将永远不会抛出异常。
相反,您需要的是count()方法(它位于SplObjectStorage基类上)。因此,您可以通过以下方式测试是否返回了任何内容:
if ($totalpages->count() > 0)你也可以
if ($totalpages->count())https://stackoverflow.com/questions/27670262
复制相似问题