简体   繁体   English

Symfony DomCrawler没有输出任何内容

[英]Symfony DomCrawler is not outputing anything

This is the code I am using 这是我正在使用的代码

$client = new Client();

$requests = [
$client->createRequest('GET', 'http://httpbin.org'),
$client->createRequest('GET', 'http://httpbin.org')
];

$options = [
'complete' => [
    [
        'fn' => function (CompleteEvent $event) {
            $crawler = new Crawler('GET',  $event->getRequest()->getUrl());
            echo '<p>'.$crawler->filter('title')->text().'</p>';
        },
        'priority' => 0,
        'once'     => false
    ]
  ]
];

$pool = new Pool($client, $requests, $options);
$pool->wait();

It gives no error but it outputs nothing either. 它没有错误,但是也没有输出。 I have tried replacing the URLs but still I get no output. 我尝试替换URL,但是仍然没有输出。

Your primary issue with the code sample is the instantiation of your Symfony\\Component\\DomCrawler\\Crawler object. 代码示例的主要问题是Symfony\\Component\\DomCrawler\\Crawler对象的实例化。 As currently written, "GET" is the sole content of $crawler ; 如当前所写,“ GET”是$crawler的唯一内容; as a result the call to $crawler->filter() returns an instance of Symfony\\Component\\DomCrawler\\Crawler that contains an empty DOMNodeList. 结果,对$crawler->filter()的调用返回了一个Symfony\\Component\\DomCrawler\\Crawler实例,该实例包含一个空的DOMNodeList。 This is why your output is empty. 这就是为什么您的输出为空的原因。

Replace: 更换:

$crawler = new Crawler('GET',  $event->getRequest()->getUrl());

with: 有:

$crawler = new Crawler(null, $event->getRequest()->getUrl());
$crawler->addContent(
    $event->getResponse()->getBody(),
    $event->getResponse()->getHeader('Content-Type')
);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM