scr*_*fix 10 screen-scraping web-crawler goutte
问题:
无法完全理解Goutte网络刮刀.
请求:
有人可以帮助我理解或提供代码,以帮助我更好地了解如何使用Goutte网络刮刀吗?我已经阅读了README.md.我正在寻找比提供的更多信息,例如Goutte中可用的选项以及如何编写这些选项,或者当您查看表单时,您是否搜索表单的名称=或id =?
试图抓取的网页布局:
步骤1:
网页有一个表单,有一个单选按钮,可以选择填写哪种表格(即名称或许可证).默认情况下,名称带有名字和姓氏文本框以及状态下拉菜单选择列表.如果选择Radio,则会有jQuery或JavaScript使First和Last Name文本框消失,并显示License文本框.
第2步:
成功提交表单后,它会将您带到一个包含多个链接的页面.我们可以进入其中一个来获取我们需要的信息.
第3步:
一旦我们成功点击链接,我们希望第三页包含我们正在寻找的数据,并且我们希望将该数据存储到php变量中.
提交错误信息:
如果提交了错误信息,则jQuery/Javascript返回"未找到记录"消息.与提交的页面相同.
注意:
首选方法是选择许可证单选按钮,填写许可证编号,选择状态,然后提交表单.我已经阅读了大量关于Goutte的帖子和博客以及其他项目,我无处可以找到Goutte可用的选项,如何找到这些信息或如果它存在的话如何使用这些信息.
One*_*ema 16
您要查看的文档是Symfony2 DomCrawler.
Goutte是一个基于Guzzle的客户端构建,每次请求/提交内容时都会返回Crawlers:
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'http://www.symfony-project.org/');
Run Code Online (Sandbox Code Playgroud)
使用此爬虫,您可以执行诸如获取正文中的所有P标记之类的内容:
$nodeValues = $crawler->filter('body > p')->each(function (Crawler $node, $i) {
return $node->text();
});
print_r($nodeValues);
Run Code Online (Sandbox Code Playgroud)
填写并提交表格:
$form = $crawler->selectButton('sign in')->form();
$crawler = $client->submit($form, array(
'username' => 'username',
'password' => 'xxxxxx'
));
Run Code Online (Sandbox Code Playgroud)
Crawler上有一个selectButton()方法,它返回另一个Crawler,它与给定文本的按钮(input [type = submit],input [type = image]或按钮)相匹配.[ 1 ]
您单击链接或设置选项,选择复选框等,请参阅表单和链接支持.
要从爬网程序获取数据,请使用html或text方法
echo $crawler->html();
echo $crawler->text();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19398 次 |
| 最近记录: |