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的可用选项,也找不到如何找到这些信息,或者如何使用这些信息(如果确实存在)。

经过多次尝试和错误后,我发现有一种更简单、记录良好、更好的帮助(如果需要的话)而且比痛风刀更有效。如果痛风有问题,请尝试以下方法:

  • 简单HTML Dom:
  • 如果您的情况与我的情况相同,您试图刮取的页面需要来自他们自己网站的推荐人,那么您可以使用CURL和简单HTML DOM的组合,因为简单HTML DOM似乎没有能力发送推荐人。如果您不需要推荐人,那么您可以使用简单的HTMLDOM来刮取页面

    $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会帮你的。