[英]Goutte: How to submit a form button without value?
在Amazon上的“创建愿望清单链接”上 ,将弹出一个表单。 表单包含以下方式的提交按钮:
<span class="a-button-inner"><input data-action="reg-create-submit" data-reg-create-submit="{"sid":"192-7611799-5529931"}" 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' => 'amazon@gmail.com', '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()
与确切的文本匹配,在我看来,该文本不存在。 请帮忙
好吧,让我们直截了当。 您需要的是到达目标“表单”元素,为此,您不必严格使用“ 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'));
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.