2014-11-14 39 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輸出是什麼?也嘗試$ crawler-> selectButton('Create a Wish List') - > form();也許在換行方面存在一些問題 – 2014-11-26 00:10:02

回答

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')); 

希望這有助於。