Web crawler 如何使用痛风
问题:Web crawler 如何使用痛风,web-crawler,screen-scraping,goutte,Web Crawler,Screen Scraping,Goutte,问题: 无法完全理解痛风刮板 请求: 有人可以帮助我理解或提供代码,以帮助我更好地了解如何使用Goutte网页刮板?我已经阅读了README.md。我正在寻找比它提供的更多的信息,例如Goutte中有哪些选项以及如何编写这些选项,或者当您查看表单时,是否搜索表单的名称=或id= 试图删除的网页布局: 步骤1: 该网页有一个表单,该表单有一个单选按钮,用于选择要填写的表单类型(即名称或许可证)。默认情况下,它使用名和姓文本框以及状态下拉菜单选择列表命名。如果您选择Radio,则jQuery或Jav
无法完全理解痛风刮板 请求:
有人可以帮助我理解或提供代码,以帮助我更好地了解如何使用Goutte网页刮板?我已经阅读了README.md。我正在寻找比它提供的更多的信息,例如Goutte中有哪些选项以及如何编写这些选项,或者当您查看表单时,是否搜索表单的名称=或id= 试图删除的网页布局:
步骤1:
该网页有一个表单,该表单有一个单选按钮,用于选择要填写的表单类型(即名称或许可证)。默认情况下,它使用名和姓文本框以及状态下拉菜单选择列表命名。如果您选择Radio,则jQuery或JavaScript会使名字和姓氏文本框消失,并显示许可证文本框 步骤2:
成功提交表单后,它会将您带到具有多个链接的页面。我们可以去找其中的一个来获取我们需要的信息 步骤3:
一旦我们成功地点击了我们想要的链接,第三个页面就有了我们正在寻找的数据,我们希望将这些数据存储到一个php变量中 提交错误信息:
如果提交了错误的信息,那么jQuery/Javascript将返回 “未找到任何记录。”与提交内容在同一页上 注意:
首选方法是选择许可单选按钮,填写许可证编号,选择州,然后提交表格。我已经阅读了大量关于Goutte的文章、博客和其他项目,但我找不到Goutte的可用选项,也找不到如何找到这些信息,或者如何使用这些信息(如果确实存在)。经过多次尝试和错误后,我发现有一种更简单、记录良好、更好的帮助(如果需要的话)而且比痛风刀更有效。如果痛风有问题,请尝试以下方法:
$url="http://www.example.com/sub-page-needs-referer/";
$referer="http://www.example.com/";
$html=new simple_html_dom(); // Create a new object for SIMPLE HTML DOM
/** cURL Initialization **/
$ch = curl_init($url);
/** Set the cURL options **/
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_REFERER,$referer);
$output = curl_exec($ch);
if($output === FALSE) {
echo "cURL Error: ".curl_error($ch); // do something here if we couldn't scrape the page
}
else {
$info = curl_getinfo($ch);
echo "Took ".$info['total_time']." seconds for url: ".$info['url'];
$html->load($output); // Transfer CURL to SIMPLE HTML DOM
}
/** Free up cURL **/
curl_close($ch);
// Do something with SIMPLE HTML DOM. It is well documented and very easy to use. They have a lot of examples.
您要查看的文档是 Goutte是一个客户端构建,它在您每次请求/提交内容时都返回爬虫:
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'
));
爬虫程序上有一个selectButton()方法,返回
另一个与按钮匹配的爬虫程序(输入[type=submit],
使用给定文本输入[type=image]或按钮)。[]
单击链接或设置选项,选择复选框等,请参见
要从爬虫程序获取数据,请使用html
或text
方法
echo $crawler->html();
echo $crawler->text();
Goutte正在尝试做更多的事情,从我所知道的:点击链接,跟随重定向,提交表单,等等——基本上是模仿浏览器。谢谢。然而,被质疑的并不是痛风的能力。它缺乏关于如何正确使用它的文档。我试了又试,试了又试,但就是想不出来。简单的HTMLDOM非常简单。在经历了一次又一次的失败,并寻求了Goutte从未遇到过的帮助之后,我甚至不需要在简单的HTML DOM上寻求帮助,只需要阅读文档的一小部分就可以找到答案。我只做了一点Goette,所以现在很难说这些文档是否好。您是否出于兴趣而使用自动完成IDE?如果不是的话,它会让你的生活变得更加轻松——我想如果没有Netbeans,它会变得更加困难。如果你想刮取,看看Symfony刮取器文档,它是广泛的,有很多例子。以及组件。也许查阅文档可以帮助您理解。我发现它非常有用,因为您还可以在DOM上运行Xpath查询。获取文本或原始html非常简单。这使我能够结合Xpath和CSS选择来执行非常精确的爬网?目前这是一个非常普遍的问题,很难回答。如果问题是JavaScript没有在Goutte中运行,那么这是正确的-您需要为此运行适当的浏览器。无头webkit会帮你的。