2015-01-15 92 views
2

这是我在不同的文件狂饮HTTP客户端暧昧回应

use Symfony\Component\DomCrawler\Crawler; 
$guzzle = new GuzzleHttp\Client(['base_url' => 'http://pricematch.pk/mobile/samsung-galaxy-s6-80514-price-in-Pakistan']); 
$response = $guzzle->get(); 
$crawler = new Crawler((string)$response->getBody()); 
echo $crawler->filter('.product-shop-wrapper .price')->text()."\r\n"; 

代码在这一个网址是硬编码,这一次成功的回声过滤文本。当下面代码中的每个循环中的相同url /任何url来自变量时

$guzzle = new GuzzleHttp\Client(['base_url' => 'pricematch.pk/mobile-phone-prices-in-pakistan']); 

$response = $guzzle->get(); 

$crawler = new Crawler((string)$response->getBody()); 
$crawler->filter('.product-name')->each(function ($node,$counter) { 
    echo $counter." ".$node->text()."\r\n"; 
    $url=$node->filter('a')->extract(array('href'))[0]."\r\n"; 
    echo $url."\r\n"; 
    $url='http://pricematch.pk'.$url; 
    echo $url; 
    $guzzle = new GuzzleHttp\Client(['base_url' => $url]); 
    $response = $guzzle->get(); 
    $crawler = new Crawler((string)$response->getBody()); 

爬网程序引发异常,说当前节点列表为空。 href返回一个相关的url,我在上面的代码中追加了根url。我已经打印了很多次。即使URL与代码#1相同,过滤器也会抛出异常。 我在做什么错?
更新2:我刚刚发现,在码2履带数据从

pricematch.pk/mobile-phone-prices-in-pakistan 


未来它应该从

$网址
这是怎么布莱恩来吗?

回答

0

愚蠢的我。在提取上述代码中的URL的同时,我将链接的换行符连接到网址的末尾,从而可能将URL编码为__,从而基本上改变了URL并因此改变了响应。