我在编写功能测试和 DOMCrawler 时遇到问题。我的问题是通过链接抓取邮件内容。从文档中我看到可以使用 html 内容作为参数创建爬虫。所以这是我的代码块:
$mailCrawler = new Crawler($message->getBody());
$linkCrawler = $mailCrawler->selectLink('Link name');
$client->click($linkCrawler->link());
在第三行我有一个异常,因为 $linkCrawler 有空的 $uri 字段。 异常信息:
InvalidArgumentException: Current URI must be an absolute URL ("").
谁能告诉我为什么爬虫无法获取该链接?
我只能说 $message var getBody 方法返回了正确的内容。
问候
最佳答案
您需要指定根爬虫网址。示例:
$crawler = new Crawler('', 'http://www.example.com');
$crawler->addHtmlContent("
<!DOCTYPE html>
<html>
<body>
<a href=\"/rel-link\">rel-link-text</a>
<a href=\"http://another.com/abs-link\">abs-link-text</a>
</body>
</html>
", 'UTF-8');
$cLink1 = $crawler->selectLink('rel-link-text')->eq(0);
$l1 = $cLink1->link();
echo $l1->getUri(); // http://www.example.com/rel-link
$cLink2 = $crawler->selectLink('abs-link-text')->eq(0);
$l2 = $cLink2->link();
echo $l2->getUri(); // http://another.com/abs-link
关于php - Symfony2 DOMCrawler selectLink 返回 null uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12056339/