2014-11-14 5 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-> selectButton ('위시리스트 만들기') -> form();을 시도해보십시오. 어쩌면 뉴 라인에 문제가있다. –

답변

1

그럼 이걸 바로 잡아 봅시다. 당신이 필요로하는 것은 당신의 타겟 "폼"엘리먼트에 도달하는 것입니다.이 문제에 대해서 엄격하게 XPath 식만으로이 엘리먼트를 얻을 수있는 "selectButton"함수를 사용할 필요는 없습니다.

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

희망을.

관련 문제