Goutte: Как отправить кнопку формы без значения?

На Amazon Создать ссылку на список желаний который выскакивает форма. форма содержит кнопку отправки следующим образом:

<span class="a-button-inner"><input data-action="reg-create-submit" data-reg-create-submit="{&quot;sid&quot;:&quot;192-7611799-5529931&quot;}" class="a-button-input a-declarative" type="submit" aria-labelledby="a-autoid-162-announce"><span class="a-button-text" aria-hidden="true" id="a-autoid-162-announce">
Create a Wish List
</span></span>

Я использую следующий код, но это не выбор формы:

require_once 'goutte.phar';
error_reporting(E_ALL);
use Goutte\Client;

$crawler = $client->request('GET',$url);
$status_code = $client->getResponse()->getStatus();
$form = $crawler->selectButton('Sign in')->form();
$crawler = $client->submit($form, array('email' => '[email protected]', 'password' => 'amazonpasswd'));
//Create a Wish List
$crawler = $client->request('GET',"http://www.amazon.com/gp/registry/wishlist/ref=nav_wishlist_create?ie=UTF8&triggerElementID=createList");
sleep(5);
$form = $crawler->selectButton('
Create a Wish List
')->form();

print_r($form); //It returns Nothing

Проблема, вероятно, в том, что selectButton() соответствует точному тексту, которого в моем случае нет. Пожалуйста помоги

1

Решение

Ну, давай прямо.
Вам нужно достичь целевого элемента «form», поэтому вам не нужно строго использовать функцию «selectButton», вы можете получить этот элемент только с помощью выражения XPath.

Я думаю, что веб-структура изменилась с тех пор, как вы опубликовали это, потому что теперь кнопка «Создать список пожеланий», очевидно, имеет значение «createNew», но для того, чтобы сканировать веб-сайты с помощью кнопки без значения, вы можете сделать это:

require_once 'goutte.phar';

use Goutte\Client;

$client = new Client();

$crawler = $client->request('GET', 'http://www.amazon.com/gp/registry/wishlist/ref=nav_wishlist_create?ie=UTF8&triggerElementID=createList');

$form = $crawler->filterXPath('//h1[@class="a-nowrap"]/form')->form();

print_r ($form);

Таким образом, вы можете получить доступ к форме без функции selectButton, и вы можете ввести эту форму обычным способом:

$crawler = $client->submit($form, array('input_name1' => 'value1', 'input_name2' => 'value2'));

Надеюсь это поможет.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]