问题:
无法完全了解Goutte网页抓取工具。
要求:
有人可以帮助我理解或提供代码以帮助我更好地了解如何使用Goutte网络抓取工具吗?我已经阅读了README.md。我正在寻找比提供的信息更多的信息,例如Goutte中可用的选项以及如何编写这些选项,或者当您查看表单时,是否在搜索表单的name =或id =?
试图抓取的网页布局:
步骤1 :
该网页有一个带有单选按钮的表单,用于选择要填写哪种表单(即名称或许可证)。它默认为带有名字和姓氏的名称文本框,以及状态下拉菜单选择列表。如果选择“广播”,则使用jQuery或JavaScript可以使“名字”和“姓氏”文本框消失,并显示“许可证”文本框。
步骤2 :
成功提交表单后,它将带您进入具有多个链接的页面。我们可以进入其中两个之一来获取我们所需的信息。
步骤3 :
成功单击链接后,我们希望第三页包含我们要查找的数据,并将该数据存储到php变量中。
提交不正确的信息:
如果提交了错误的信息,那么jQuery/Javascript将返回一条消息
“没有找到记录。”在与提交内容相同的页面上。
注意:
首选方法是选择许可证单选按钮,填写许可证编号,选择状态,然后提交表格。我已经阅读了有关Goutte的大量文章和博客以及其他文章,而我无处找不到Goutte的可用选项,如何查找此信息或如何使用这些信息(如果存在的话)。
最佳答案
您要查看的文档是Symfony2 DomCrawler。
Goutte是基于Guzzle的客户端构建,每次您请求/提交某些内容时,它都会返回Crawlers:
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'http://www.symfony-project.org/');
使用此搜寻器,您可以执行将所有P标签放入体内的操作:
$nodeValues = $crawler->filter('body > p')->each(function (Crawler $node, $i) {
return $node->text();
});
print_r($nodeValues);
填写并提交表格:
$form = $crawler->selectButton('sign in')->form();
$crawler = $client->submit($form, array(
'username' => 'username',
'password' => 'xxxxxx'
));
您单击链接或设置选项,选择复选框等等,请参阅Form and Link support。
要从搜寻器获取数据,请使用
html
或text
方法echo $crawler->html();
echo $crawler->text();