2014-11-14 2 views
1

Amazon Create Wish List Link которые всплывают в форме. форма содержит кнопку отправки в следующем виде:Goutte: Как отправить кнопку формы без стоимости?

<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() матчи точный текст, который в моем случае не там. Пожалуйста, помогите

+0

Что делает $ crawler output? также попробуйте $ crawler-> selectButton («Создать список желаний») -> form(); возможно, есть проблема с новостями –

ответ

1

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

Я думаю, что веб-структура изменилась с тех пор, как вы разместили это, потому что теперь кнопка «Создать Wish List», по-видимому, имеет значение «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')); 

Надеется, что это помогает.

Смежные вопросы