如何使用goutte

时间:2017-08-30 01:41:22

标签: php asp.net web scraper goutte

我正在尝试使用goutte创建一个PHP脚本

  • 登录
  • 点击提交按钮。
  • 将本地csv文件保存下载(如果手动完成)。

这个应用程序(http://portal.agrinet.ie/)建立在asp.net

我能够成功登录并通过代码点击表单上的提交按钮,但它目前只返回此结果:



Symfony\Component\DomCrawler\Crawler Object
(
    [uri:protected] => http://portal.agrinet.ie/Exports.aspx
    [defaultNamespacePrefix:Symfony\Component\DomCrawler\Crawler:private] => default
    [namespaces:Symfony\Component\DomCrawler\Crawler:private] => Array
        (
        )

    [baseHref:Symfony\Component\DomCrawler\Crawler:private] => http://portal.agrinet.ie/Exports.aspx
    [document:Symfony\Component\DomCrawler\Crawler:private] => 
    [nodes:Symfony\Component\DomCrawler\Crawler:private] => Array
        (
        )

    [isHtml:Symfony\Component\DomCrawler\Crawler:private] => 1
)




这是php代码:



require 'vendor/autoload.php';
use Goutte\Client;

$client = new Client();
echo '<pre>';
$crawler = $client->request('GET', 'http://portal.agrinet.ie/Default.aspx');
$form = $crawler->selectButton('ctl00$MainContent$btnLogin')->form();

$crawler = $client->submit($form, array('ctl00$MainContent$txtUsername' => 'XXXX', 'ctl00$MainContent$txtPassword' => 'XXXXX'));
  
$id = $crawler->filter("#ctl00_mnuMainn26 a")->link();
$exportPage = $client->click($id);
$downloadBut = $exportPage->selectButton('ctl00$MainContent$btnDownload')->form();
$file = $client->submit($downloadBut);
print_r($file);
&#13;
&#13;
&#13;

我的问题是如何在使用goutte单击提交按钮后在本地保存文件。

1 个答案:

答案 0 :(得分:0)

解决方案:

$ form = $ exportPage-&gt; selectButton(&#39; ctl00 $ MainContent $ btnDownload&#39;) - &gt; form();

$客户端 - &GT;提交($形式);

的print_r($客户端 - &GT; GETRESPONSE() - &GT;的getContent());

getContent()向我提供了该文件的所有内容,并将该内容保存在我已在本地计算机上创建的另一个文件中。