【问题标题】:Goutte: How to submit a form button without value?Goutte:如何提交没有价值的表单按钮?
【发布时间】:2014-11-14 12:54:49
【问题描述】:

Amazon Create Wish List Link 上弹出一个表单。表单包含以下方式的提交按钮:

<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' => '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() 匹配在我的情况下不存在的确切文本。请帮忙

【问题讨论】:

  • $crawler 输出什么?也可以试试 $crawler->selectButton('Create a Wish List')->form();也许换行符有问题

标签: php guzzle goutte


【解决方案1】:

好吧,让我们直说吧。 您需要的是到达您的目标“表单”元素,就此而言,您并不严格需要使用“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'));

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多