如何使用 goutte 从 asp.net 表单在本地保存下载文件
how to save the download file locally from a asp.net form using goutte
我正在尝试使用 goutte 创建一个 PHP 脚本到
- 登录
- 点击提交按钮。
- 将下载的 csv 文件保存在本地(如果手动完成)。
此应用程序(http://portal.agrinet.ie/)基于 asp.net
我能够通过代码成功登录并点击表单上的提交按钮,但目前 returns 只有这个结果:
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);
我的问题是如何在使用 goutte 单击提交按钮后将文件保存到本地。
解决方案:
$form = $exportPage->selectButton('ctl00$MainContent$btnDownload')->form();
$client->提交($form);
print_r($client->getResponse()->getContent());
getContent() 给了我文件的所有内容,我将该内容保存在我已经在本地计算机上创建的另一个文件中。
我正在尝试使用 goutte 创建一个 PHP 脚本到
- 登录
- 点击提交按钮。
- 将下载的 csv 文件保存在本地(如果手动完成)。
此应用程序(http://portal.agrinet.ie/)基于 asp.net
我能够通过代码成功登录并点击表单上的提交按钮,但目前 returns 只有这个结果:
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);
我的问题是如何在使用 goutte 单击提交按钮后将文件保存到本地。
解决方案:
$form = $exportPage->selectButton('ctl00$MainContent$btnDownload')->form();
$client->提交($form);
print_r($client->getResponse()->getContent());
getContent() 给了我文件的所有内容,我将该内容保存在我已经在本地计算机上创建的另一个文件中。